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

Đề tài: code:liệt kê các phần tử xuất hiện đúng 1 lần

  1. #1
    Ngày gia nhập
    11 2008
    Nơi ở
    Hà Nội
    Bài viết
    70

    Mặc định Các bác giúp em về code:liệt kê các phần tử xuất hiện đúng 1 lần

    các bác xem hộ em đoạn code sai ở đâu với :
    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. int A[100],n;
    4. void nhap()
    5. {
    6.     printf("\n Nhap n=");
    7.     scanf("%d",&n);
    8.     int i;
    9.     for(i=0;i<n;i++)
    10.     {
    11.         printf("A[%d]=",i);
    12.         scanf("%d",&A[i]);
    13.     }
    14. }
    15. void inmang()
    16. {
    17.     int i;
    18.     for(i=0;i<n;i++)
    19.     printf("%5d",A[i]);
    20. }
    21. void inkq()
    22. {
    23.     int i,j,dem=1;
    24.     for(i=0;i<n;i++)
    25.     for(j=0;j<n;j++)
    26.     if(A[i]==A[j]&&i!=j)dem++;
    27.     if(dem==1) printf("%5d",A[i]);
    28.     dem=1;
    29. }
    30. void main()
    31. {
    32.     clrscr();
    33.     nhap();
    34.     printf("\n Mang vua nhap");inmang();
    35.     printf("\n Cac pt xuat hien 1 lan la:");inkq();
    36.     getch();
    37. }
    Đã được chỉnh sửa lần cuối bởi zodjac1990 : 02-12-2008 lúc 06:47 PM.
    Dân thường sống đẹp đè bẹp dân chơi.
    Hi [you]

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

    Code:
    #include<stdio.h>
    #include<conio.h>
    int A[100],n;
    void nhap()
    {
        printf("\n Nhap n=");
        scanf("%d",&n);
        int i;
        for(i=0;i<n;i++)
        {
            printf("A[%d]=",i);
            scanf("%d",&A[i]);
        }
    }
    void inmang()
    {
        int i;
        for(i=0;i<n;i++)
        printf("%5d",A[i]);
    }
    void inkq()
    {
        int i,j,dem;
        for(i=0;i<n;i++)
        {
           dem =0;
           for(j=0;j<n;j++)
           {
               if(A[i]==A[j]&&i!=j)
                  dem =1;
           }
           if(dem==0)
              printf("%5d",A[i]);
        }
    }
    void main()
    {
        nhap();
        printf("\n Mang vua nhap");inmang();
        printf("\n Cac pt xuat hien 1 lan la:");
        inkq();
        getch();
    }
    thử đi cậu

  3. #3
    Ngày gia nhập
    11 2008
    Nơi ở
    Hà Nội
    Bài viết
    70

    Đồng môn có khác(ptit), chỉ dẫn tận tình ghê. Cảm ơn anh nhiều. Chạy ngon lành.
    Dân thường sống đẹp đè bẹp dân chơi.
    Hi [you]

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

    vậy ah,chắc cậu bạn sinh năm 90 ah,học lớp nào thế,chắc thua mình 1 tuổi rồi )

  5. #5
    Ngày gia nhập
    11 2008
    Nơi ở
    Hà Nội
    Bài viết
    70

    Anh coder ơi, cho em hỏi nếu em muốn liệt kê các phần tử xuất đúng 2 lần thì thế nào?
    Em định thay thành thế này nhưng mà sai.
    C Code:
    1. void inkq()
    2. {
    3.     int i,j,k,dem;
    4.     for(i=0;i<n;i++)
    5.     {
    6.         dem=0;
    7.         for(j=0;j<n;j++)
    8.             if(A[i]==A[j]&&i!=j)
    9.             printf("%5d",A[i]);
    10.     }
    11. }
    Dân thường sống đẹp đè bẹp dân chơi.
    Hi [you]

  6. #6
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Mặc định code:liệt kê các phần tử xuất hiện đúng 1 lần

    Một lần xuất hiện thì rất đơn giản rồi, nhưng nếu như 2 lần xuất hiện hoặc liệt kê số lần xuất hiện thì không đơn giản như vậy.

    Bạn phải tạo thêm một hàm kiểm tra sự xuất hiện của phần tử đó ở trước chứa, để tránh việc liệt kê nhiều lần một giá trị.

    Hàm đó chỉ tương tự hàm kiểm tra xuôi thôi, có điều kết quả trả về thì ngược lại. Bạn thử viết xem nhé!

  7. #7
    Ngày gia nhập
    11 2008
    Nơi ở
    Neverland
    Bài viết
    48

    C Code:
    1. void inkq()
    2. {
    3.     int i,j,k,dem;
    4.     for(i=0;i<n-1;i++)
    5.     {
    6.         dem=0;
    7.         for(j=i+1;j<n;j++)
    8.             if(A[i]==A[j]) dem++;
    9.         if (dem == 2)
    10.             printf("%5d",A[i]);
    11.     }
    12. }
    I'm superman

  8. #8
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Đã bảo cần kiểm tra xem đã xuất hiện ở trước chưa mà, dùng code trên với VD này thì sao:

    1 2 3 1 1 2 2 3 3

    Nó sẽ liệt kê ra cả 1 2 3 mặc dù chúng xuất hiện 3 lần.

  9. #9
    Ngày gia nhập
    11 2008
    Nơi ở
    Neverland
    Bài viết
    48

    Oh sorry Code vội quá nên ẩu không để ý vấn đề trên thanks QuangHoang :
    C Code:
    1. void inkq()
    2. {
    3.     int i,j,dem;
    4.     int check[100];
    5.     for (i=0;i<n;i++)
    6.         check[i] = 0;
    7.     for(i=0;i<n;i++)
    8.      if (!check[i])
    9.       {
    10.         dem=1;
    11.         for(j=0;j<n;j++)
    12.             if(A[i]==A[j] && i!=j) {
    13.                 dem++;
    14.                 check[j]=1;
    15.             }
    16.         if (dem == 2)
    17.             printf("%5d",A[i]);
    18.       }
    19. }
    I'm superman

  10. #10
    Ngày gia nhập
    11 2008
    Nơi ở
    Hà Nội
    Bài viết
    70

    Em chưa được học check[], anh có thể giải thích cho em rõ hơn không ạ???
    Dân thường sống đẹp đè bẹp dân chơi.
    Hi [you]

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

  1. Lập trình C Xuất nhập file trong C kết quả xuất ra không đúng?
    Gửi bởi lamhoang100 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: 05-06-2013, 05:38 PM
  2. Trả lời: 1
    Bài viết cuối: 14-12-2012, 04:55 PM
  3. Lập trình C Xuất các phần tử trùng nhau không cho kết quả đúng?
    Gửi bởi teotoni trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 11
    Bài viết cuối: 10-05-2011, 11:32 PM
  4. Code quản lý sách viết trên C | Lỗi phần xuất dữ liệu, giúp mình sửa lỗi?
    Gửi bởi rong3sao trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 24-05-2009, 11:07 AM
  5. sửa code tìm vị trí của phần tử có giá trị x xuất hiện đầu tiên trong mảng
    Gửi bởi thangit trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 21
    Bài viết cuối: 29-07-2008, 11:30 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