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

Đề tài: tìm số dương đầu tiên trong dãy số thực

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

    Mặc định tìm số dương đầu tiên trong dãy số thực

    Đề bài:nhập dãy số thực sau đó tìm số dương đầu tiên trong dãy vừa nhập
    Mình làm như sau:
    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. void nhap(int a[],int n)
    4.   {
    5.               int i;
    6.               printf("nhap vao cac phan tu cua day:\n");
    7.               for(i=0;i<n;i++)
    8.                 {
    9.                               printf("phan tu thu %d: ",i);
    10.                               scanf("%d",&a[i]);
    11.                 }
    12.   }
    13. void in(int a[],int n)
    14.   {
    15.               int i;
    16.               printf("day duoc in ra nhu sau:\n");
    17.               for(i=0;i<n;i++)
    18.               printf("%3d ",a[i]);
    19.               puts("");
    20.   }
    21. int ktsoduong(int a[],int n)
    22.   {
    23.          int i=0;
    24.          if(a[0]>0)
    25.          return a[0];
    26.          if(a[0]<0)
    27.          {
    28.          while (i<n)
    29.            {
    30.               i++;            
    31.               if(a[i]>0)
    32.               return a[i];
    33.               else
    34.               return -1;
    35.            }
    36.          }
    37.   }
    38. main()
    39.   {
    40.          int n,a[100],tg;
    41.          printf("Nhap vao so phan tu cua day: ");
    42.          scanf("%d",&n);
    43.          nhap(a,n);
    44.          in(a,n);
    45.          tg= ktsoduong(a,n);
    46.          if(tg>0)
    47.          printf("So duong dau tien trong day la: %d",tg);
    48.          else
    49.          printf("Day ko co so duong");
    50.          getch();
    51.   }
    Nhưng kết quả toàn sai
    Mọi người sửa gíup mình bài này nhé.Mình làm ko hiểu sao cứ khi nhập số phần tử của dãy là 4vd:-9,-8,5,4 thì nó lại báo là ko có số dương nào.

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

    Sai ở chỗ nào vậy bạn? Nó có in ra mảng cho bạn không?
    Xem lại cách truyền tham số cho hàm nha. Cái hàm nhập ý.
    Trao đổi kiến thức sẽ giúp ta tiếp cận nhanh với kiến thức.

  3. #3
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất nhiều sóng gió
    Bài viết
    447

    Trích dẫn Nguyên bản được gửi bởi chip_pro Xem bài viết
    C Code:
    1. int ktsoduong(int a[],int n)
    2.   {
    3.          int i=0;
    4.          if(a[0]>0)
    5.          return a[0];
    6.          if(a[0]<0)
    7.          {
    8.          while (i<n)
    9.            {
    10.               i++;            
    11.               if(a[i]>0)
    12.               return a[i];
    13.               else
    14.               return -1;
    15.            }
    16.          }
    17.   }
    Sửa cũng được thôi, nhưng tốt nhất bạn nên code lại hoàn toàn hàm này bằng vòng for. Dãy số nhập vào có độ dài nhất định, thật vô lý khi dùng vòng while. Cấu trúc sai sẽ là căn nguyên của rất nhiều tội lỗi.

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

    code này nhiều chỗ sai và chưa hợp lý. Nhưng chả có lý do gì lại nói là vô lý khi dùng vòng lặp while cả.
    Bạn Ada nói hộ coi tại sao lại :
    Dãy số nhập vào có độ dài nhất định, thật vô lý khi dùng vòng while.
    Trao đổi kiến thức sẽ giúp ta tiếp cận nhanh với kiến thức.

  5. #5
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất nhiều sóng gió
    Bài viết
    447

    Trích dẫn Nguyên bản được gửi bởi NT_OnlyLove Xem bài viết
    code này nhiều chỗ sai và chưa hợp lý. Nhưng chả có lý do gì lại nói là vô lý khi dùng vòng lặp while cả.

    Xin lỗi vì không nói rõ. Mình nói vòng for đây không phải là vòng for bất kỳ mà là vòng for với i chạy từ 0 đến n-1.

    Dãy số nhập vào được xử lý trong không quá n bước. Vòng for cho thấy điều này một cách rõ ràng. Đối với vòng while, điều này không hiển nhiên và đòi hỏi chứng minh.

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

    Mặc định tìm số dương đầu tiên trong dãy số thực

    Thực ra với dạng đó thì for nó rõ ràng hơn cả. Còn với while thì cũng chả có gì phải chứng minh cả. Mỗi người code theo một cách hiểu.
    Giả sử trong n bước chạy mà tại bước thứ k < n thỏa mãn mà phải dừng lại thì while chiếm ưu thế hơn ...
    Nói chung là hiểu nó làm việc và sử dụng tốt là được, vì nó cũng chỉ là những vòng lặp mà thôi. Tức lặp đi lặp lại, chả có gì cả.
    Trong một topic về vòng lặp thì nói dùng while là tốt nhất.
    Mà bác TQN còn đưa ra mấy dạng như
    void AFun(...)
    {
    BFun(...);
    // more
    }

    void BFun(...)
    {
    AFun(...);
    // more
    }
    her her
    Trao đổi kiến thức sẽ giúp ta tiếp cận nhanh với kiến thức.

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

    Wink Bài đó làm như vậy nè!

    C Code:
    1. /*nhap vao mot day so va in ra so duong dau tien cua day so do*/
    2. #include<stdio.h>
    3. #include<conio.h>
    4.  
    5. void NhapDay(int a[],int n);
    6. void XuatDay(int a[],int n);
    7. int KTSODUONG(int a[],int n);
    8.  
    9. void main()
    10. {
    11.     int n,kq;
    12.  
    13.     int a[100];
    14.     printf("\t\tTac gia TuongHuy^^!\n");
    15.     printf("\t\tyahoo:tuonghuy1988\n");
    16.     printf("\t****************************\n");
    17.     printf("nhap vao so phan tu cua day so: ");
    18.     scanf("%d",&n);
    19.     printf("nhap day:\n");
    20.     NhapDay(a,n);
    21.     printf("xuat day:\n");
    22.     XuatDay(a,n);
    23.     kq=KTSODUONG(a,n);
    24.     if(kq>0)
    25.         printf("so duong dau tien cua day so vua nhap la:%d.\n",kq);
    26.     else
    27.         printf("day vua nhap ko co so duong^^!");
    28.     getch();
    29. }
    30. void NhapDay(int a[],int n)
    31. {
    32.     for(int i=0;i<n;i++)
    33.     {
    34.         printf("Nhap a[%d]= ",i);
    35.         scanf("%d",&a[i]);
    36.  
    37.     }
    38. }
    39. void XuatDay(int a[],int n)
    40. {
    41.     for(int i=0;i<n;i++)
    42.     {
    43.         printf("phan tu a[%d]=%d",i,a[i]);
    44.         printf("\n");
    45.     }
    46. }
    47. int KTSODUONG(int a[],int n)
    48. {
    49.  
    50.     for(int i=0;i<n;i++)
    51.         if(a[i]>0)
    52.         return a[i];
    53.         return 0;
    54.              
    55. }
    Bạn có thắc mắc gì liên hệ qua yahoo nhá!hôm nào đi uống cafe

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

    Trích dẫn Nguyên bản được gửi bởi NT_OnlyLove Xem bài viết
    Sai ở chỗ nào vậy bạn? Nó có in ra mảng cho bạn không?
    Xem lại cách truyền tham số cho hàm nha. Cái hàm nhập ý.
    Tớ đảm bảo là hàm nhập của tớ ko sai.Tớ chỉ dám nói là tớ sai ở hàm kiểm tra số dương đầu tiên thôi

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

    Trích dẫn Nguyên bản được gửi bởi Ada Xem bài viết
    Sửa cũng được thôi, nhưng tốt nhất bạn nên code lại hoàn toàn hàm này bằng vòng for. Dãy số nhập vào có độ dài nhất định, thật vô lý khi dùng vòng while. Cấu trúc sai sẽ là căn nguyên của rất nhiều tội lỗi.
    Tớ không vô lý khi dùng vòng while đâu.Đơn thuần chỉ là lặp lại các giá trị của i thôi,chừng nào mà i còn nhỏ hơn n,thì ta sẽ tiếp tục tăng i để thoả mãn tìm ra giá trị dương đầu tiên.Mỗi vòng lặp có một ưu điểm riêng không nhất thiết cứ phải dùng mãi 1 vòng lặp

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

    Trích dẫn Nguyên bản được gửi bởi tuonghuy Xem bài viết
    C Code:
    1. /*nhap vao mot day so va in ra so duong dau tien cua day so do*/
    2. #include<stdio.h>
    3. #include<conio.h>
    4.  
    5. void NhapDay(int a[],int n);
    6. void XuatDay(int a[],int n);
    7. int KTSODUONG(int a[],int n);
    8.  
    9. void main()
    10. {
    11.     int n,kq;
    12.  
    13.     int a[100];
    14.     printf("\t\tTac gia TuongHuy^^!\n");
    15.     printf("\t\tyahoo:tuonghuy1988\n");
    16.     printf("\t****************************\n");
    17.     printf("nhap vao so phan tu cua day so: ");
    18.     scanf("%d",&n);
    19.     printf("nhap day:\n");
    20.     NhapDay(a,n);
    21.     printf("xuat day:\n");
    22.     XuatDay(a,n);
    23.     kq=KTSODUONG(a,n);
    24.     if(kq>0)
    25.         printf("so duong dau tien cua day so vua nhap la:%d.\n",kq);
    26.     else
    27.         printf("day vua nhap ko co so duong^^!");
    28.     getch();
    29. }
    30. void NhapDay(int a[],int n)
    31. {
    32.     for(int i=0;i<n;i++)
    33.     {
    34.         printf("Nhap a[%d]= ",i);
    35.         scanf("%d",&a[i]);
    36.  
    37.     }
    38. }
    39. void XuatDay(int a[],int n)
    40. {
    41.     for(int i=0;i<n;i++)
    42.     {
    43.         printf("phan tu a[%d]=%d",i,a[i]);
    44.         printf("\n");
    45.     }
    46. }
    47. int KTSODUONG(int a[],int n)
    48. {
    49.  
    50.     for(int i=0;i<n;i++)
    51.         if(a[i]>0)
    52.         return a[i];
    53.         return 0;
    54.              
    55. }
    Bạn có thắc mắc gì liên hệ qua yahoo nhá!hôm nào đi uống cafe
    Thanks bạn nhiều !!!

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

  1. Lập trình C In k số nguyên tố đầu tiên có tổng các chữ số là chắn trong mảng, lỗi chỉ kiểm tra được với số đầu tiên?
    Gửi bởi ncn1992vn trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 23-11-2012, 10:20 PM
  2. giá trị đầu tiên trong đoạn t,d của mảng
    Gửi bởi cttd trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 18
    Bài viết cuối: 13-04-2011, 07:24 PM
  3. Một số vấn đề về số và độ ưu tiên trong C++
    Gửi bởi duyxp trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 40
    Bài viết cuối: 31-03-2011, 10:37 PM
  4. Code tìm kiếm trong cây nhị phân trong C++. Lỗi chỉ tìm được từ đầu tiên trong file thôi sửa thế nào?
    Gửi bởi elvish trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 1
    Bài viết cuối: 11-04-2010, 09:43 PM
  5. chương trìng đầu tiên trong C#?
    Gửi bởi longtom trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 11
    Bài viết cuối: 03-03-2010, 07:25 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