Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 14 kết quả

Đề tài: mấy pro test cho em bài kt số hoàn hảo

  1. #1
    Ngày gia nhập
    03 2008
    Bài viết
    10

    Mặc định mấy pro test cho em bài kt số hoàn hảo

    đây là code của em, các pro test rồi giúp em tìm lỗi sai với ạ
    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3.  
    4.  
    5.  
    6. int m,n,i,j;       
    7.  
    8.  
    9. int check(int i)    //ham kt so hoan hao
    10. {  
    11.     n=0; m=0;
    12.     for (j=1; j<=(i/2); j++)
    13.         if (i%j==0) n+=j;
    14.     if (n==i) m=1;
    15.     return(m);}
    16. void main()
    17. {       clrscr();
    18.     printf("Nhap n: "); scanf("%d",&n); j=0;
    19.     for (i=1; i<=n; i++)
    20.         if (check(i)) { printf("%d ",i); j++;}
    21.     if (j==0) printf("Ko co so hoan hao nao trong %d so dau tien",n);
    22.     getch();

  2. #2
    Ngày gia nhập
    03 2008
    Bài viết
    10

    lúc chạy em ko thấy nó hiện ra số hoàn hảo, em dùng BC 3.1

  3. #3
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    Code:
    #include <stdio.h>
    #include <conio.h>
    
    
    
    		
    
    
    int check(int i)	//ham kt so hoan hao
    {	
    	int n=0; m=0;
    	for (j=1; j<=(i/2); j++)
    		if (i%j==0) n+=j;
    	if (n==i) m=1;
    	return(m);}
    void main()
    {       int i,j; clrscr();
    	printf("Nhap n: "); scanf("%d",&n); j=0;
    	for (i=1; i<=n; i++)
    		if (check(i)) { printf("%d ",i); j++;}
    	if (j==0) printf("Ko co so hoan hao nao trong %d so dau tien",n);
    	getch();}
    số hoàn hảo là số gì hả bạn,return(m); để làm gì nhỉ...

  4. #4
    Ngày gia nhập
    03 2008
    Bài viết
    78

    - Số hoàn hảo là số bằng tổng các ước số của nó (ko tính chính nó)
    E.g:
    6 = 1 + 2 +3 // OK perfect num
    28 = 1 + 2 + 4 + 7 + 14 //OK perfect num
    9 != 1 + 3 //not perfect Num

    - Còn về code của bạn thì bạn gõ sao mà rối bời thế...Mình nên đặt tên biến ko nên trùng nhau đến mức như thế...
    Ví dụ: nếu tính tổng các số thì đặt tên là sum..ai lại đặt n cho trùng với n(số phần tử đc duyệt)...

    - Bài của bạn mình test rồi...nó là do các biến trùng nhau vô tội vạ quá mà ra thôi.Thêm nữa bạn ko nên khai báo biến toàn cục mà nên khai báo trong hàm main.Theo mình lỗi 90% bài của bạn ko chạy đc là do đặt biến toàn cục + đặt tên trùng nhau mà ra thôi.

    - Đây là bài của bạn nhé...Mình chỉ edit lại các tên biến thôi..
    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. int check(int i)//ham kt so hoan hao
    4. {  
    5.     int sum=0; //sum thay the cho n
    6.     int isOK = 0; //isOK thay the cho m
    7.     for (int j=1; j<=i/2; j++)
    8.     {
    9.         if (i%j==0)
    10.         {
    11.             sum+=j;
    12.         }
    13.     }
    14.     if (sum==i)
    15.     {
    16.         isOK = 1;
    17.     }
    18.     return(isOK);
    19. }
    20. void main()
    21. {  
    22.     clrscr();
    23.     int N;//tim so hoan hao tu 1...N
    24.     int k; //bien chay vong lap
    25.     int dem=0;//dem xem co bao nhieu so hoan hao
    26.     printf("Nhap n: ");
    27.     scanf("%d",&N);
    28.     for (k=5;k<=N;k++)
    29.     if (check(k))
    30.        
    31.     {
    32.         printf("%d ",k);
    33.         dem++;
    34.     }
    35.     if (dem==0) printf("Ko co so hoan hao nao trong %d so dau tien",N);
    36.     getch();
    37. }

    @coder_gate :return(m); thì ý của bạn đó là : m là 1 biến bool(0,1) nên nếu nó là số hoàn hảo thì gán m=1 để ra kết quả true thôi mà.Tại zì bạn đó đặt tên ngộ wá nên khó nhận ra nhỉ...mình sửa lại là isOK...
    Đã được chỉnh sửa lần cuối bởi hacker_mubaohiem : 22-03-2008 lúc 11:33 AM.
    No way, No success..

  5. #5
    Ngày gia nhập
    03 2008
    Bài viết
    10

    bạn hacker_mubaohiem àh, thật ra thì đây chỉ là 1 bài trong số hơn 100 bài của mình. Mình khai báo biến toàn bài là để tiết kiệm bộ nhớ, mình cần phải dồn hết hơn 100 bài vào 1 bài tập lớn nên việc tiết kiệm bộ nhớ là cần thiết, về bài của mình, mình cũng đã sửa đc, dù sao cũng thanks bạn

  6. #6
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    Mặc định mấy pro test cho em bài kt số hoàn hảo

    :return(m); thì ý của bạn đó là :
    m là 1 biến bool(0,1)
    nên nếu nó là số hoàn hảo thì gán m=1 để ra kết quả true thôi mà.Tại zì bạn đó đặt tên ngộ wá nên khó nhận ra nhỉ...mình sửa lại là isOK...
    biến bool là biến gì cậu nhỉ

  7. #7
    Ngày gia nhập
    03 2008
    Bài viết
    78

    bạn hacker_mubaohiem àh, thật ra thì đây chỉ là 1 bài trong số hơn 100 bài của mình. Mình khai báo biến toàn bài là để tiết kiệm bộ nhớ, mình cần phải dồn hết hơn 100 bài vào 1 bài tập lớn nên việc tiết kiệm bộ nhớ là cần thiết, về bài của mình, mình cũng đã sửa đc, dù sao cũng thanks bạn
    - bạn àh, mình chân thành khuyên bạn ko nên tiếp tục sử dụng biến toàn cục như vậy nữa.Bởi vì nó nguy hiểm lắm...
    + đôi khi bạn test bài ko bao jờ tìm đc chỗ sai là vậy đó.
    + Hơn nữa bạn nói tốn bộ nhớ ư...Ko hề hấn jì hết..ta chỉ cần khai báo thêm các biến cho chương trình nó sáng sủa và tránh bị lỗi.
    + Làm cho chương trình đc module hóa một cách triệt để...

    @black_cat:làm nhiều 100 bài ko bằng làm 10 bài một cách có hiệu quả thực sự...bạn thử xem.Chúc bạn thành công nhé!

    biến bool là biến gì cậu nhỉ
    - biến bool (trong C++) chính là biến logic đó coder_gate..Nó chỉ mang 2 giá trị: 1(true) và 0(false).Trong Ansi-C ko hỗ trợ biến bool nên ta sử dụng kiểu int để biểu diễn tạm....
    No way, No success..

  8. #8
    Ngày gia nhập
    07 2007
    Nơi ở
    Sơn La
    Bài viết
    133

    Trích dẫn Nguyên bản được gửi bởi blackcat Xem bài viết
    đây là code của em, các pro test rồi giúp em tìm lỗi sai với ạ
    Code:
    #include <stdio.h>
    #include <conio.h>
    
    
    
    int m,n,i,j;		
    
    
    int check(int i)	//ham kt so hoan hao
    {	
    	n=0; m=0;
    	for (j=1; j<=(i/2); j++)
    		if (i%j==0) n+=j;
    	if (n==i) m=1;
    	return(m);}
    void main()
    {       clrscr();
    	printf("Nhap n: "); scanf("%d",&n); j=0;
    	for (i=1; i<=n; i++)
    		if (check(i)) { printf("%d ",i); j++;}
    	if (j==0) printf("Ko co so hoan hao nao trong %d so dau tien",n);
    	getch();
    Sửa lại chút nè , so sánh xem có gì khác không nhé:
    C++ Code:
    1. #include <iostream>
    2. using namespace std;
    3. bool Check(int param)
    4. {  
    5.              int total=1;
    6.     for ( j=2 ;  j<= (i/2) ; j++ )
    7.           if (param % j == 0 ) total+=j;
    8.     return(param == total);
    9. }
    10. void main()
    11. {      
    12.              system("CLS");
    13.              int num;
    14.              bool flag;
    15.              flag=false;
    16.     cout<<"Nhap so n : "; cin>>num;
    17.     for (i=1; i<=num; i++)
    18.             if ( Check(i) )
    19.                     {
    20.                           cout<<i;
    21.                           if(!flag)  flag=true;
    22.                     }
    23.     if ( !flag ) cout<<"Ko co so hoan hao nao trong "
    24.                                 <<n
    25.                                 <<" so dau tien.";
    26.     system("PAUSE");
    Trao đổi kiến thức sẽ giúp ta tiếp cận nhanh với kiến thức.

  9. #9
    Ngày gia nhập
    01 2008
    Bài viết
    17

    al trời vậy ko nói sớm đi nè minh dung đoạn code giup ban nhé ban đảm nó sẻ chay #include<conio.h>
    #include<stdio.h>
    int KT_HH(int n)
    {
    int tong=0;
    int i=1;
    while(i<n)
    {
    if(n%i==0)
    tong=tong+i;
    i++;
    }
    return(tong==n);
    }
    void main()
    {

    int n;
    printf("\nMoi ban nhap So Nguyen Duong n= ");
    scanf("%d",&n);
    int kq=KT_HT(n);
    if(kq==1)
    printf("\n so ban vua nhap la ht");
    else
    printf("\nsovua nhap ko la HT");
    getch();
    }
    chuc ban thanh con
    Để có tình yêu ta phải trở thành kẻ tàn nhẫn, hoặc chấp nhận là kẻ thất bại khi chưa ra trận

  10. #10
    Ngày gia nhập
    01 2008
    Bài viết
    17

    PHP Code:
    #include<conio.h>
    #include<stdio.h>
    int KT_HH(int n)
    {
        
    int tong=0;
        
    int i=1;
        while(
    i<n)
        {    
            if(
    n%i==0)
                
    tong=tong+i;
            
    i++;
        }
        return(
    tong==n);
    }
    void main()
    {

        
    int n;
        
    printf("\nMoi ban nhap So Nguyen Duong n= ");
        
    scanf("%d",&n);
        
    int kq=KT_HT(n);
        if(
    kq==1)
            
    printf("\n so ban vua nhap la ht");
        else
            
    printf("\nsovua nhap ko la HT");
        
    getch();

    chuc ban van su may man
    Để có tình yêu ta phải trở thành kẻ tàn nhẫn, hoặc chấp nhận là kẻ thất bại khi chưa ra trận

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

  1. Bài tập C Test lỗi và sửa sai
    Gửi bởi z8kun trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 17-12-2012, 11:57 AM
  2. test
    Gửi bởi hammemaytinh9X 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: 10-12-2012, 10:04 AM
  3. CUnit Test và CPPUnit Test, sử dụng như thế nào?
    Gửi bởi ndn trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 8
    Bài viết cuối: 04-04-2012, 01:03 PM
  4. Test case | Tạo test Project với NUnit?
    Gửi bởi nguyenthanh2687 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 06-12-2010, 09:04 PM
  5. Tìm bụi + Test màu màn hình LCD,LED :D
    Gửi bởi zstar trong diễn đàn Sản phẩm phần mềm của bạn
    Trả lời: 3
    Bài viết cuối: 10-09-2010, 03:18 PM

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