Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: [ Solved ] Help? Về bài tìm số tuyệt hảo?

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

    Mặc định [ Solved ] Help? Về bài tìm số tuyệt hảo?

    Số tuyệt hảo là số bằng tổng các ước số thực sự của nó. Ví dụ : 6 = 1 + 2 + 3.Tìm các số tuyệt hảo trong khoảng từ 1 đến 3000
    Em ko biết cách làm, giúp em với
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

  2. #2
    Ngày gia nhập
    09 2007
    Bài viết
    724

    Số tuyệt hảo! ặc tưởng là số gì té ra là số hoàn thiện
    giờ ý tưởng của nó như thế này.
    bạn viết ra một hàm tìm tất cả các ước số của một số.
    sau đó cộng chúng lại với nhau rồi kiểm tra bằng số bạn vừa nhập không.
    sau đó chỉ là câu lệnh return thôi.

    chúc bạn thành công.

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

    Ok, em làm như thế này sao với các số lớn quá thì nó ko đúng đc nữa nhỉ?
    Code:
    	for(int i=1,j=0;i<=(so/2),j<=(so/2);j++,i++)
         		if((so % i) == 0)
          	{
          		//printf("\n%d",i);
            		uoc[j] = i;
         	   }
       	printf("\nCac uoc so la: ");
       	for(j=0;j<=(so/2);j++)
       		{
          		printf("%d  ",uoc[j]);
          		sum = sum + uoc[j];
          	}
       	if (sum == so)
       		printf("\nSo ban vua nhap la so tuyet hao.");
       	else
    			printf("\nSo ban vua nhap khong la so tuyet hao.");

  4. #4
    Ngày gia nhập
    09 2007
    Bài viết
    724

    Trích dẫn Nguyên bản được gửi bởi Darkpower Xem bài viết
    Ok, em làm như thế này sao với các số lớn quá thì nó ko đúng đc nữa nhỉ?
    Code:
    	for(int i=1,j=0;i<=(so/2),j<=(so/2);j++,i++)
         		if((so % i) == 0)
          	{
          		//printf("\n%d",i);
            		uoc[j] = i;
         	   }
       	printf("\nCac uoc so la: ");
       	for(j=0;j<=(so/2);j++)
       		{
          		printf("%d  ",uoc[j]);
          		sum = sum + uoc[j];
          	}
       	if (sum == so)
       		printf("\nSo ban vua nhap la so tuyet hao.");
       	else
    			printf("\nSo ban vua nhap khong la so tuyet hao.");
    số lớn quá ??? thế nào là số lớn quá bạn.
    lưu ý là nếu bạn dùng trên dos thì kiểu int được có 2 byte thôi.
    nếu số lớn hơn số 2 byte nó dùng được là đúng rồi.

    mình góp ý về code của là bạn nên viết lại như sau nó sẽ hay hơn xíu.

    Code:
    	
           int j = 0;
           uoc[j++]  = 1;
          int n = int(so/2);
           for(int i=1;i<=n; i++)
         		if((so % i) == 0)
          	{
          		//printf("\n%d",i);
            		uoc[j++] = i;
         	   }
       	printf("\nCac uoc so la: ");
       	for(l=0;l<=j;l++)
       		{
          		printf("%d  ",uoc[l]);
          		sum = sum + uoc[l];
          	}
       	if (sum == so)
       		printf("\nSo ban vua nhap la so tuyet hao.");
       	else
    			printf("\nSo ban vua nhap khong la so tuyet hao.");

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

    Code:
    // Tinh uoc
    #include <stdio.h>
    #include <conio.h>
    #define MAX 100
    void main()
    {
    	int sum=0,dem,so,j;
       int uoc[MAX];
       char ch;
       do
       {
    
       	printf("\nMoi ban nhap vao so bat ki de tinh cac uoc cua so do: ");
          fflush(stdin);
       	scanf("%d",&so);
    
       	for(int i=1,j=0;i<=(so/2),j<=(so/2);j++,i++)
         		if((so % i) == 0)
          	{
          		//printf("\n%d",i);
            		uoc[j] = i;
                printf("%4d",uoc[j]);
                sum = sum + uoc[j];
         	   }
    
       	if (sum == so)
       		printf("\nSo ban vua nhap la so hoan hao.");
       	else
    			printf("\nSo ban vua nhap khong la so hoan hao.");
          fflush(stdin);
       	printf("\nBan co muon kiem tra so khac khong? (Y/N)");
       	ch = getchar();
    
       }
       while (ch == 'y' || ch == 'Y');
    
    }
    Làm thế này thì đúng rồi nhưng đến lần chạy thứ 2 nó báo kq sai, Vdu như nhập lần 1 là 6, thì báo đúng số các nghiệm và là số hoàn hảo, nhưng lần chạy thứ 2 cũng nhập 6 nhưng mà nó báo ko phải là số hoàn hảo, thế là thế nào nhỉ?

  6. #6
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Mặc định [ Solved ] Help? Về bài tìm số tuyệt hảo?

    bạn chưa gán biến sum =0 trước khi vào vòng for.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  7. #7
    Ngày gia nhập
    09 2007
    Bài viết
    724

    Trích dẫn Nguyên bản được gửi bởi Darkpower Xem bài viết
    Code:
    // Tinh uoc
    #include <stdio.h>
    #include <conio.h>
    #define MAX 100
    void main()
    {
    	int sum=0,dem,so,j;
       int uoc[MAX];
       char ch;
       do
       {
    
       	printf("\nMoi ban nhap vao so bat ki de tinh cac uoc cua so do: ");
          fflush(stdin);
       	scanf("%d",&so);
    
       	for(int i=1,j=0;i<=(so/2),j<=(so/2);j++,i++)
         		if((so % i) == 0)
          	{
          		//printf("\n%d",i);
            		uoc[j] = i;
                printf("%4d",uoc[j]);
                sum = sum + uoc[j];
         	   }
    
       	if (sum == so)
       		printf("\nSo ban vua nhap la so hoan hao.");
       	else
    			printf("\nSo ban vua nhap khong la so hoan hao.");
          fflush(stdin);
       	printf("\nBan co muon kiem tra so khac khong? (Y/N)");
       	ch = getchar();
    
       }
       while (ch == 'y' || ch == 'Y');
    
    }
    Làm thế này thì đúng rồi nhưng đến lần chạy thứ 2 nó báo kq sai, Vdu như nhập lần 1 là 6, thì báo đúng số các nghiệm và là số hoàn hảo, nhưng lần chạy thứ 2 cũng nhập 6 nhưng mà nó báo ko phải là số hoàn hảo, thế là thế nào nhỉ?
    OK. Cách của bạn meocon là đối phó. còn nếu muốn làm việc tốt thì ban nên tách nó thành hàm con đi thì nó sẽ tốt hơn đó.

    chúc bạn thành công.
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

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

  1. Hà Nội Tuyển dụng Tuyển nhân viên kinh doanh website - Tháng 02 - 03/2013
    Gửi bởi congtytatthanh trong diễn đàn Tuyển dụng - Việc làm CNTT
    Trả lời: 1
    Bài viết cuối: 04-03-2013, 03:14 PM
  2. tuyển sinh viên làm thêm - Làm văn phòng.Chỉ tuyển Nữ
    Gửi bởi quynhnv 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: 29-09-2012, 09:34 AM
  3. Học viện CNTT Quốc tế karROX Ấn Độ Tuyển nhân viên Tuyển sinh và quản lý
    Gửi bởi xavang_ah trong diễn đàn Tuyển dụng - Việc làm CNTT
    Trả lời: 0
    Bài viết cuối: 03-05-2011, 11:29 AM
  4. [ Solved ]Tính Tổng S=1^1/1!+1^2/2!+...+1^n/n!
    Gửi bởi boy_popping trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 9
    Bài viết cuối: 22-04-2008, 10:00 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