Từ 1 tới 5 trên tổng số 5 kết quả

Đề tài: xoá các phần tử giống nhau trong mảng

  1. #1
    Ngày gia nhập
    12 2007
    Bài viết
    54

    Post xoá các phần tử giống nhau trong mảng

    Code:
     /* xoa cac phan tu giong nhau */
    # include <stdio.h>
    # include <conio.h>
    
     void nhap_mang (int A[],int n)
     {
    	 for (int i=0;i<n;i++)
    			{  printf ("\n Nhap A[%d]: ",i);
    				scanf ("%d",&A[i]);
    			 }
      }
    void xoa(int A[],int n,int x)
     { for (int i=x;i<n;i++)
    	  A[i]=A[i+1];
      }
    void kiem_tra(int A[],int *n)
     {   for (int i=0;i<n;i++)
    		  for(int j=i+1;j<n;j++)
    			  if (A[i]==A[j])
    				 { xoa(A,n,A[j]);
    					n=n-1;
    					j=j-1; // có thể thay = j=i;
    				 }
    
    
     }
    void main()
     {  int A[100],n;
    	 printf ("\n Nhap N:");
    	 scanf("%d",&n);
    	 nhap_mang(A,n);
    	 kiem_tra(A,&n);
    	 printf ("\n mang sau khi xoa :");
    	 for (int i=0;i<n;i++)
    	 printf ("%4d",A[i]);
    }
    sửa giúp code của em với . Bài này thì có thể gán j=i hoặc j=j-1 đều đúng phải ko ?
    Rất mong được mọi người giúp đỡ :

    Kiến thức mình biết chỉ là hạt cát trên sa mạc

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

    đây là code mình đã fix lại cho bạn rồi nè :
    C Code:
    1. # include <stdio.h>
    2. # include <conio.h>
    3.  
    4. void nhap_mang (int A[],int n)
    5. {
    6.     for (int i=0;i<n;i++)
    7.     {
    8.         printf ("\n Nhap A[%d]: ",i);
    9.         scanf ("%d",&A[i]);
    10.     }
    11. }
    12.  
    13. void xoa(int A[],int *n,int x)
    14. {
    15.     for (int i=x;i<(*n);i++)
    16.         A[i] = A[i+1];
    17.     (*n) = (*n) - 1;
    18. }
    19.  
    20. void kiem_tra(int A[],int *n)
    21. {
    22.     for (int i=0;i<(*n);i++)
    23.         for(int j=i+1;j<(*n);j++)
    24.             if ( (i != j) && (A[i] == A[j]))
    25.             {
    26.                 xoa(A,n,j);
    27.             }
    28. }
    29.  
    30. void main()
    31. {
    32.     int A[100],n;
    33.  
    34.     printf ("\n Nhap N:");
    35.     scanf("%d",&n);
    36.     nhap_mang(A,n);
    37.     kiem_tra(A,&n);
    38.     printf ("\n mang sau khi xoa :");
    39.  
    40.     for (int i=0;i<n;i++)
    41.         printf ("%4d",A[i]);
    42. }
    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.

  3. #3
    Ngày gia nhập
    12 2007
    Bài viết
    54

    /* xoa cac phan tu giong nhau */
    # include <stdio.h>
    # include <conio.h>

    void nhap_mang (int A[],int n)
    {
    for (int i=0;i<n;i++)
    { printf ("\n Nhap A[%d]: ",i);
    scanf ("%d",&A[i]);
    }
    }
    void xoa(int A[],int n,int x)
    { for (int i=x;i<n;i++)
    A[i]=A[i+1];
    }
    void kiem_tra(int A[],int *p)
    { for (int i=0;i<*p;i++)
    for(int j=i+1;j<*p;j++)
    if (A[i]==A[j])
    { xoa(A,*p,A[j]); *p=*p-1;
    j=j-1;
    }


    }
    void main()
    { int A[100],n;
    printf ("\n Nhap N:");
    scanf("%d",&n);
    nhap_mang(A,n);
    kiem_tra(A,&n);
    printf ("\n mang sau khi xoa :");
    for (int i=0;i<n;i++)
    printf ("%4d",A[i]);
    }
    bài em còn sai chỗ : nhap 2 2 2 1 thi nó in ra là 2 thoi
    Rất mong được mọi người giúp đỡ :

    Kiến thức mình biết chỉ là hạt cát trên sa mạc

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

    Mình đã sửa lại rồi nè :

    C Code:
    1. void kiem_tra(int A[],int *p)
    2. {
    3.     for (int i=0;i<*p;i++)
    4.         for(int j=i+1;j<*p;j++)
    5.             if (A[i]==A[j])
    6.             {
    7.                 xoa(A,*p,j); // Sai chỗ này
    8.                 (*p)=(*p)-1;
    9.                 j--;
    10.             }
    11. }
    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.

  5. #5
    Ngày gia nhập
    12 2007
    Bài viết
    54

    cám ơn anh nhé
    Rất mong được mọi người giúp đỡ :

    Kiến thức mình biết chỉ là hạt cát trên sa mạc

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

  1. xóa các phần tử giống nhau trong mảng chỉ để lại 1 phần tử
    Gửi bởi trungbd trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 30
    Bài viết cuối: 12-08-2013, 04:01 PM
  2. Bài tập C xóa phần tử trùng nhau trong mảng 1 chiều để lại 1 phần tử
    Gửi bởi ronoa trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 06-01-2012, 10:46 PM
  3. Bài tập C Đếm các phần tử khác nhau trong mảng
    Gửi bởi cr9 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 32
    Bài viết cuối: 24-04-2011, 09:40 PM
  4. Thủ tục loại bỏ các phần tử trùng nhau, giữ lại duy nhất 1 phần tử trong DSLK
    Gửi bởi mrtyoffline trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 02-03-2011, 10:27 PM
  5. Kỹ thuật C Hoán vị từng cặp phần tử kề nhau trong mảng
    Gửi bởi datinh_o0o7 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 24-11-2010, 12:05 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