Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Trang 1 của 2 12 CuốiCuối
Kết quả 1 đến 10 của 11
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Giúp em tìm lỗi bài toán nhập vào dãy số rồi sắp xếp theo thứ tự tăng dần!

    Đây là bài toán của em. Vì mới học nên khi chép bài em ko theo dõi kịp thầy giáo giảng đoạn cuối.
    Phần dưới của main(){. Làm thế nào để nó hiện ra màn hình là:
    Dãy sau khi đã sắp xếp là: ...

    #include <stdio.h>
    #include <conio.h>
    int a[100], n;
    void nhap(){
    printf ("
    Nhap n: "); scanf ("%d",&n);
    for (int i=0;i<n;i++){
    printf ("
    a[%d]= ",i);
    scanf ("%d", &a[i]);
    }
    }
    void in(){
    for (int i=0;i<n;i++)
    printf (" %d", a[i]);
    }
    void sapxep(){
    int i, j;
    for (i=0;i<=n;i++)
    for (j=i+1;j<n;j++)
    if (a[i]>a[j]){
    int t=a[i]; a[i]=a[j]; a[j]=t;
    }
    }
    main(){
    int j;
    nhap();
    printf("
    Day so da nhap la: "); in();
    for (j=0; j<n; j++){
    if (sapxep())
    printf("
    %d ",a[j]);
    }
    }

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Phần đó bạn tự viết chứ nhỉ.
    ĐH chứ có phải là phổ thông đâu.

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi prog10
    Phần đó bạn tự viết chứ nhỉ.
    ĐH chứ có phải là phổ thông đâu.
    ừ. là mình tự viết. Nhưng chạy ko được như yêu cầu bài toán. Bạn giúp mình sửa lại được ko

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Đây là code mình đã sửa lại rồi.
    Bạn nên học kĩ một chút về phần hàm đi.
    Mã:
    #include <stdio.h>
    #include <conio.h>
    int a[100], n;
    void nhap(){
        printf ("
    Nhap n: ");
        scanf ("%d",&n);
        for (int i=0;i<n;i++){
            printf ("
     a[%d]= ",i);
            scanf ("%d", &a[i]);
        }
    }
    void in(){
        for (int i=0;i<n;i++)
        printf (" %d", a[i]);
    }
    void sapxep(){
        int i, j;
        for (i=0;i<n;i++)//phai nho hon n thoi chu ban
            for (j=i+1;j<n;j++)
                if (a[i]>a[j]){
                   int t=a[i];
                   a[i]=a[j]; 
                   a[j]=t;
                }
    }
    main(){
        int j;
        nhap();
        printf("
     Day so da nhap la: ");
        in();
        for (j=0; j<n; j++){
            if (sapxep())//ham sap xep co tra ve gia tri
            printf("
     %d ",a[j]);
        }
    }

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    bạn đã thử chạy chuơng trình này chưa. mình vừa thử chạy trên Dev C nó báo lỗi ở chỗ if (sapxep()) dòng cuối ý. Ko chạy đc

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    OK! thanks bạn. Tiện đây cho mình hỏi luôn. Là mình có bài toán này. Sau khi chạy thì cái dòng "Cac so nguyen to la" nó bị lặp.
    Ví dụ có 3 số thì nó lặp luôn 3 dòng. 4 số 4 dòng. Làm thế nào để cho nó viết thành 1 dòng. vd như các số nguyên tố là: 3 7 13...

    //Bai toan nhap va dua ra day so co n so
    #include <stdio.h>
    #include <conio.h>
    #include <math.h>
    int a[100], n;
    int nguyento(int n){
    if (n==0||n==1) return 0;
    for (int i=2;i<=(int)sqrt(n);i++)
    if (n%i==0) return 0;
    return 1;
    }
    void nhap(){
    printf ("
    Nhap n: "); scanf ("%d",&n);
    for (int i=0;i<n;i++){
    printf ("a[%d] = ",i);
    scanf ("%d",&a[i]);
    }
    }
    void in(){
    for (int i=0;i<n;i++)
    printf (" %d", a[i]);
    }
    void timmax(){
    int max=a[0], i, b[50], k=0;
    for (i=1;i<n;i++){
    if (a[i]>max) max=a[i];
    }
    for (i=0;i<n;i++){
    if (a[i]==max){
    b[k]=i;
    k++;
    }
    }
    printf ("
    So lon nhat la %d voi so lan xuat hien la %d tai vi tri",max,k);
    for (i=0;i<n;i++)
    if (a[i]==max) printf(" %d",i);
    }
    main(){
    int i;
    nhap();
    printf ("
    Day so da nhap: "); in();
    timmax();
    for(i=0;i<n;i++)
    {
    if (nguyento(a[i])==1) printf("
    Cac so nguyen to la: %d",a[i]);
    }
    }

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Xin lỗi bạn.Đây là phần chưa sửa lỗi.Mình chỉ ra chỗ sai cho bạn thôi.
    Đây là code.Mình đã chạy rồi.
    Mã:
    #include <stdio.h>
    #include <conio.h>
    int a[100], n;
    void nhap(){
        printf ("
    Nhap n: ");
        scanf ("%d",&n);
        for (int i=0;i<n;i++){
            printf ("
     a[%d]= ",i);
            scanf ("%d", &a[i]);
        }
    }
    void in(){
        for (int i=0;i<n;i++)
        printf (" %d", a[i]);
    }
    void sapxep(){
        int i, j;
        for (i=0;i<n;i++)
            for (j=i+1;j<n;j++)
                if (a[i]>a[j]){
                   int t=a[i];
                   a[i]=a[j]; 
                   a[j]=t;
                }
    }
    main(){
        nhap();
        printf("
     Day so da nhap la: ");
        in();
        printf("
     Day so sau khi sap xep la: ");
        sapxep();
        in();
        getch();
    }

  8. #8
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Thêm 1 biến là "có hay ko có" nữa.

  9. #9
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Để trong vòng lặp thì nó sẽ in lặp lại.
    Muốn chỉ in ra 1 lần thì đặt dòng thông báo trước vòng lặp, trong vòng lặp chỉ in ra các số nguyên tố thôi

    Mã:
    printf("
    Cac so nguyen to la: ");for(i = 0;i < n;i++){    if (nguyento(a[i])==1) printf("%d   ",a[i]);}

  10. #10
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Với n < 100 và a[i] < 100;

    Mã:
    void dem(){    for(int i = 0; i < n; i++)        b[a[i]]++;} void in_lan_xuat_hien(){    for(int i = 0; i < 100; i++)        if(b[i])        {            printf("
    So %d xuat hien: %d lan", i, b[i]);        }}

 

 
Trang 1 của 2 12 CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •