Từ 1 tới 10 trên tổng số 10 kết quả

Đề tài: [C]Làm ơn chỉ chỗ sai giùm.

  1. #1
    No Avatar
    anhhungnup Khách

    Mặc định [C]Làm ơn chỉ chỗ sai giùm.

    Mình viết cái này không có biết nó mắc chứng gì mà chạy không thèm ra kết quả. Mong anh em cao tay hơn chỉ giáo.

    Code:
    #include<stdio.h>
    #include<conio.h>
    int usc(int a,int b)
    {
    	if(a==b)return a;
    	if(a>b)return usc(a-b,a);
    	return usc(a,b-a);
    }
    
    void main()
    {
    	clrscr();
    	int a,b;
    	printf("\n\nNhap vao so a:");scanf("%d",&a);
    	printf("\n\nNhap vao so b:");scanf("%d",&b);
    	printf("\n\nUoc so chung lon nhat cua %d va %d la: ",a,b);usc(a,b);
      getch();
    }
    Đã được chỉnh sửa lần cuối bởi anhhungnup : 08-12-2006 lúc 02:39 PM.

  2. #2
    Ngày gia nhập
    07 2006
    Bài viết
    166

    Sửa lại là :
    Code:
    if (a == b) return a;
    else if (a > b) return usc(a - b, a);
    else return usc(a, b - a);

  3. #3
    No Avatar
    anhhungnup Khách

    Vẫn không chạy được bạn ơi.
    Đã được chỉnh sửa lần cuối bởi anhhungnup : 08-12-2006 lúc 02:37 PM.

  4. #4
    Ngày gia nhập
    11 2006
    Nơi ở
    Softech - Aptech
    Bài viết
    34

    Hình như hàm tính USC sai thì phải, tớ cũng còn 1 ví dụ về phần này, bạn tham khảo nha
    Code:
    #include<stdio.h>
    #include<conio.h>
    main()
    {
    int a,b,i;
    a=i;
    clrscr();
    printf("\nNhap vao 2 so : ");
    scanf("%d %d", &a, &b);
    while(a%i!=0 || b%i!=0)
    i--;
    printf("USCLN:%d", i);
    getch();
    }

  5. #5
    No Avatar
    anhhungnup Khách

    Nếu xài vòng lặp thì mình chơi vô tư. Nhưng ở đây mình dùng đệ quy. Mong anh em giúp thêm.

  6. #6
    Ngày gia nhập
    11 2006
    Nơi ở
    Softech - Aptech
    Bài viết
    34

    Mặc định [C]Làm ơn chỉ chỗ sai giùm.

    Trích dẫn Nguyên bản được gửi bởi anhhungnup
    Nếu xài vòng lặp thì mình chơi vô tư. Nhưng ở đây mình dùng đệ quy. Mong anh em giúp thêm.
    Hix, xin lỗi bạn vì ko xem kĩ, cứ nghe đến đệ quy thì tớ toát mồ hôi rồi Mong các bro khác chỉ giúp để tớ cũng được mở mang

  7. #7
    Ngày gia nhập
    08 2006
    Nơi ở
    TpHCM
    Bài viết
    202

    giải thuật của bạn bị sai bét nhè:

    Code:
    int usc(int a,int b)
    {
    	if(a==b)return a;
    	if(a>b)return usc(a-b,a); /* sai ở đây: b chứ không phải là a. Vì a là số lớn, như vậy thì đệ quy sẽ không có điểm dừng*/
    	return usc(a,b-a);
    }

  8. #8
    No Avatar
    anhhungnup Khách

    Mình thử sữa theo cách của bạn rồi, nhưng vẫn không được, bạn có thể cho mình code của cả chương trình không.

  9. #9
    Ngày gia nhập
    08 2006
    Nơi ở
    TpHCM
    Bài viết
    202

    printf("\n\nUoc so chung lon nhat cua %d va %d la: ",a,b);usc(a,b);
    không hiểu muốn làm gì đây
    có lẽ thì nên như thế này

    printf("\n\nUoc so chung lon nhat cua %d va %d la: %d",a,b,usc(a,b));

    mình thấy cách làm như bạn là được rồi, còn cách của ntnam thì thô sơ, và lặp nhiều lần, nếu số nhập vào cỡ 4 tỷ thì ...

    nếu làm như bạn thì nên cải tiến 1 chút
    bỏ đệ quy, vì đây là đệ quy đuôi, nên có thể chuyển thành vòng lặp
    thay vì sử dụng phép - , sử dụng % để nhanh hơn trong 50% trường hợp xấu

    như thế này (mẫu dưới này vẫn còn đệ quy, cần phải khử đệ quy)

    Code:
    int usc(int a,int b)
    {
    	
    	if(a>=b) {
    		int d = a % b;
    		if (d == 0) return b;
    		return usc(b, d);
    	}
    	else {
    		int d = b % a;
    		if (d == 0) return a;
    		return usc(a, d);
    	}
    }
    bạn lấy ý về test lại, không bảo đảm chạy ngay

  10. #10
    No Avatar
    anhhungnup Khách

    Mình đã sửa bài lại theo cách của bạn nguyentuan2 và đã chạy được rồi, rất cám ơn các bạn đã giúp mình, và mình sẽ làm theo cách thứ 2 của ban nguyentuan2 đã chỉ, có lẽ cách này hay hơn nhiều so với cách của mình.

Các đề tài tương tự

  1. Bài tập C++ Định hướng giúp BT trò chơi ô chữ
    Gửi bởi zkat trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 05-11-2013, 04:29 PM
  2. Cho thuê chung cư Trung Hòa Nhân Chính giá rẻ chỉ 6tr/tháng
    Gửi bởi liemnv244 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 05-10-2013, 12:18 PM
  3. Help me ! ai giúp em vụ này với
    Gửi bởi b0ybu0n trong diễn đàn Nhập môn lập trình Java
    Trả lời: 0
    Bài viết cuối: 16-04-2013, 10:40 AM
  4. Tìm cách tính cho vòng lặp. Mọi người giúp em!!!
    Gửi bởi LQT_7 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 02-05-2009, 07:56 PM
  5. bài toán tính tổng các ước số!giúp em
    Gửi bởi phanhuuthienan trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 19-12-2008, 10:18 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn