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ố 16 kết quả

Đề tài: in ra màn hình số n sao cho tổng từ 1 đến n nhỏ hơn số a nhập vào.

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

    Mặc định in ra màn hình số n sao cho tổng từ 1 đến n nhỏ hơn số a nhập vào.

    Em mới lượm được trên mạng bài toán như sau:Given integer numbers a find the maximal integer n such that
    sum from 1 to n < =a (example a= 5, then n = 2 since 1+2=3<5 and 1+2+3 > 5)

    Phương pháp em là tính tổng sum+=n và sau mỗi lần đây lại n++ đến bao h sum không thỏa mãn <a thì in ra và em đã là đoạn code như sau:
    #include<stdio.h>
    #include<conio.h>
    int main()
    {
    int a,n,sum;
    sum=0;n=1;
    printf("Nhap a:");
    scanf("%d",&a);
    while(n<a&&sum<a)
    {
    sum+=n;
    n++;
    }
    printf("%d",n);
    getch();
    return 0;
    }
    chương trình của em chạy không đúng, xin mọi người xem xét và chỉnh cũng như giải thích cái mọi người đã chỉnh hộ em, mà tiện thể cho em hỏi debug là gì và debug chương trình này nào nào với.

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

    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. int main()
    4.     {
    5.       int a,n,sum,g;
    6.       sum=0;n;
    7.  
    8.       printf("Nhap a:");
    9.       scanf("%d",&a);
    10.  
    11.          for(n=1;n<=a;n++)   // n chay tu 1 den a
    12.           {
    13.             sum+=n;     // tinh sum
    14.             if(sum<a)      // neu sum nho hon a thi tinh sum va ket thuc vong lap
    15.              {       // gan g cho sum de khi dua sum ra ngoai vong lap no chi tinh' cai sum nho hon a thoi
    16.                 g=sum;       // neu khong gan sum cho g ma ra khoi vong lap no se tinh' sum tu dau den cui'
    17.              }
    18.           }
    19.       printf("%d",g);
    20. getch();
    21.     }

    trong bài mình giải thích cũng hơi khó hiểu tí , nếu bạn chưa hiểu thì comment mình giải thik thêm cho
    Đã được chỉnh sửa lần cuối bởi hoaithy92 : 13-11-2011 lúc 01:18 AM.

  3. #3
    Ngày gia nhập
    10 2011
    Bài viết
    3

    vẫn sai bạn ơi, tớ nhập là 5 đãng nhẽ nó phải ra 2 nhưng bài toán lại ra 3.
    ==.

  4. #4
    Ngày gia nhập
    04 2011
    Bài viết
    44

    Trích dẫn Nguyên bản được gửi bởi vuquanghoang Xem bài viết
    Em mới lượm được trên mạng bài toán như sau:Given integer numbers a find the maximal integer n such that
    sum from 1 to n < =a (example a= 5, then n = 2 since 1+2=3<5 and 1+2+3 > 5)

    Phương pháp em là tính tổng sum+=n và sau mỗi lần đây lại n++ đến bao h sum không thỏa mãn <a thì in ra và em đã là đoạn code như sau:
    Code:
    #include<stdio.h>
    #include<conio.h>
    int main()
    {
           int a,n,sum;
           sum=0;n=1;
           printf("Nhap a:");
           scanf("%d",&a);
           while(n<a&&sum<a)
           {
                sum+=n;
                n++;
            }
            printf("%d",n);
            getch();
            return 0;
    }
    chương trình của em chạy không đúng, xin mọi người xem xét và chỉnh cũng như giải thích cái mọi người đã chỉnh hộ em, mà tiện thể cho em hỏi debug là gì và debug chương trình này nào nào với.
    trong vòng while sau khi kiểm tra sum+=n thì lại có n++ ở sau nên biến n tăng 1 so với kết quả cần tìm
    và bạn sai ở điều kiện vòng lặp nữa
    C++ Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. int main(){
    4.     int a,n,sum;
    5.     sum=0;n=0;
    6.     printf("Nhap a:");
    7.     scanf("%d",&a);
    8.     while(sum<(a-n)){
    9.         n++;
    10.         sum+=n;
    11.     }
    12.     printf("%d",n);
    13.     getch();
    14.     return 0;
    15. }
    gương kia ngự ở trên tường...thế gian ai lười đc dường như ta..

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

    Trích dẫn Nguyên bản được gửi bởi vuquanghoang Xem bài viết
    vẫn sai bạn ơi, tớ nhập là 5 đãng nhẽ nó phải ra 2 nhưng bài toán lại ra 3.
    ==.
    cái này mình đưa cái tổng ra có nghĩa là n=2 , sum = 1 + 2 = 3, nhớ bài toán yêu cầu tìm sum mà

  6. #6
    Ngày gia nhập
    10 2011
    Bài viết
    3

    Mặc định in ra màn hình số n sao cho tổng từ 1 đến n nhỏ hơn số a nhập vào.

    Trích dẫn Nguyên bản được gửi bởi sora_ Xem bài viết
    C Code:
    1.     while(sum<(a-n))
    cậu ơi giải thích hộ tớ vì sao lại phải có điều kiện này với ==.

  7. #7
    Ngày gia nhập
    10 2011
    Bài viết
    21

    Trích dẫn Nguyên bản được gửi bởi vuquanghoang Xem bài viết
    cậu ơi giải thích hộ tớ vì sao lại phải có điều kiện này với ==.
    bài của mình sữa lại chỗ này là ok ^^! theo ý bạn mong muốn
    C Code:
    1. if(sum<a)      
    2.      {            
    3.          g=n;     // sửa g=sum; thành g= n;  
    4.      }

  8. #8
    Ngày gia nhập
    10 2011
    Bài viết
    21

    Trích dẫn Nguyên bản được gửi bởi sora_ Xem bài viết
    trong vòng while sau khi kiểm tra sum+=n thì lại có n++ ở sau nên biến n tăng 1 so với kết quả cần tìm
    và bạn sai ở điều kiện vòng lặp nữa
    C++ Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. int main(){
    4.     int a,n,sum;
    5.     sum=0;n=0;
    6.     printf("Nhap a:");
    7.     scanf("%d",&a);
    8.     while(sum<(a-n)){
    9.         n++;
    10.         sum+=n;
    11.     }
    12.     printf("%d",n);
    13.     getch();
    14.     return 0;
    15. }
    code của anh khi nhập 6 đáng lẽ ra 2 nhưng nó lại ra 3 , 10 thì phải ra 3 mà nó lại ra 4 .... mà trong đề là sum phải nhỏ hơn a chứ đâu đc bằng a

  9. #9
    Ngày gia nhập
    04 2011
    Bài viết
    44

    Trích dẫn Nguyên bản được gửi bởi hoaithy92 Xem bài viết
    code của anh khi nhập 6 đáng lẽ ra 2 nhưng nó lại ra 3 , 10 thì phải ra 3 mà nó lại ra 4 .... mà trong đề là sum phải nhỏ hơn a chứ đâu đc bằng a
    trích dẫn đề
    Trích dẫn Nguyên bản được gửi bởi vuquanghoang Xem bài viết
    Em mới lượm được trên mạng bài toán như sau:Given integer numbers a find the maximal integer n such that
    sum from 1 to n < =a (example a= 5, then n = 2 since 1+2=3<5 and 1+2+3 > 5)
    trường hợp mình làm là sum <= a, còn nếu muốn sum < a thì sửa vòng while là sum < (a-n-1) là được.


    Trích dẫn Nguyên bản được gửi bởi vuquanghoang Xem bài viết
    cậu ơi giải thích hộ tớ vì sao lại phải có điều kiện này với ==.
    nếu điều kiện là sum < a thì khi sum gần đến a có thỏa mãn sum<a nhưng khi thực hiện tiếp vòng lặp thì sum+n sẽ lớn hơn a dẫn đến kết quả sai. vì vậy khi kiểm tra là kiểm tra với a-n.
    ví dụ có a=5 thì khi n=2, sum=3 có sum vẫn thỏa mãn nhỏ hơn a nên sẽ thực hiện tiếp sum+=n và n++ dẫn đến kết quả sai
    Đã được chỉnh sửa lần cuối bởi sora_ : 13-11-2011 lúc 04:47 PM.
    gương kia ngự ở trên tường...thế gian ai lười đc dường như ta..

  10. #10
    Ngày gia nhập
    10 2011
    Bài viết
    21

    Trích dẫn Nguyên bản được gửi bởi sora_ Xem bài viết
    trích dẫn đề

    trường hợp mình làm là sum <= a, còn nếu muốn sum < a thì sửa vòng while là sum < (a-n-1) là được.



    nếu điều kiện là sum < a thì khi sum gần đến a có thỏa mãn sum<a nhưng khi thực hiện tiếp vòng lặp thì sum+n sẽ lớn hơn a dẫn đến kết quả sai. vì vậy khi kiểm tra là kiểm tra với a-n.
    ví dụ có a=5 thì khi n=2, sum=3 có sum vẫn thỏa mãn nhỏ hơn a nên sẽ thực hiện tiếp sum+=n và n++ dẫn đến kết quả sai
    vậy của e cái điều kiện sửa lại là sum<=n cũng đúng phải hum a

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

  1. Sửa máy tính, cài đặt windows, phần mềm tại nhà nhanh nhất, rẻ nhất, hiệu quả nhất …
    Gửi bởi hopluccc 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: 08-07-2013, 02:07 PM
  2. Trả lời: 12
    Bài viết cuối: 25-10-2012, 02:48 AM
  3. Bài tập C++ NHập mảng một chiều gồm n phần tử kết thúc nhập khi nhập một chữ cái
    Gửi bởi thienthanoze trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 15
    Bài viết cuối: 09-07-2012, 10:10 PM
  4. Bài tập C++ Viết phương trình nhập vào 1 chuỗi số.Hãy nhập vào 1 số.Đếm xem có bao nhiêu chữ số bạn vừa nhập
    Gửi bởi namtuocdn trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 16-10-2011, 10:39 AM
  5. Bài tập C++ Nhập mảng 1 chiều, nếu phần tử nhập trùng nhau thì bắt nhập lại
    Gửi bởi danielh trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 09-07-2011, 03:35 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