Trang 1 trên tổng số 3 123 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 23 kết quả

Đề tài: [ Solved ]Loại bỏ những số trùng nhau, làm cách nào dễ hiểu nhất?

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

    Angry [ Solved ]Loại bỏ những số trùng nhau, làm cách nào dễ hiểu nhất?

    Em là gà mới vô ngành, monh mấy anh chị giúp đỡ. Em cần in ra cái mảng tăng dần và loại bỏ những số nào trùng nhau. Thằng bạn em nó chỉ em rùi, mà sao em hok hiểu j hết. Anh chị nào có ý kiến j thì pót lên giúp em gà này với. VD:
    Nhập: 1 2 3 3 5 4 6 9 6 4
    In ra: 1 2 3 4 5 6 9

  2. #2
    Ngày gia nhập
    11 2007
    Bài viết
    153

    Theo ý kiến của mình thì bạn làm thế này nhé, tạo 1 biến tạm để lưu vị trí phần tử của mảng(cụ thể ở đây là phần tử thứ 0) sau đó bạn duyệt từ đầu mảng đến cuối mảng, nếu bắt gặp số nào trùng với số được gán cho biến tạm thì tiến hành dồn mảng rồi tiếp theo lại duyệt tiếp sau đó chuyển biến tạm lên phần tử kế tiếp để duyệt.Cơ bản là như thế còn đây là code:
    Code:
    #include<stdio.h>
    #include<conio.h>
    void NhapMang(int A[],int&n)
    {
    	printf("Nhap Vao Phan Tu Cua Mang: ");
    	scanf("%d",&n);
    	for(int i=0;i<n;i++)
    	{
    		printf("Nhap Vao Phan Tu Thu %d: ",i+1);
    		scanf("%d",&A[i]);
    	}
    }
    void XoaTrung(int A[],int &n)
    {
    	for(int i=0;i<n-1;i++)
    	{
    		for(int j=i+1;j<n;j++)
    		{
    			if(A[i]==A[j])
    			{
    				Delete(A,A[j],n);
    				if(A[i]==A[j])
    				{
    					j--;
    				}
    			}
    		}
    	}
    }
    void Delete(int A[100],int m,int &n)
    {
    	for(int i=m;i<n;i++)
    	{
    		A[i]=A[i+1];
    	}
    	n--;
    }
    
    void main()
    {
    	int A[100],n;
    	NhapMang(A,n);
    	XoaTrung(A,n);
    	for(int i=0;i<n;i++)
    	{
    		printf("%d\t",A[i]);
    	}
    }
    void NhapMang(int A[],int&n)
    {
    	printf("Nhap Vao Phan Tu Cua Mang: ");
    	scanf("%d",&n);
    	for(int i=0;i<n;i++)
    	{
    		printf("Nhap Vao Phan Tu Thu %d: ",i+1);
    		scanf("%d",&A[i]);
    	}
    }
    void XoaTrung(int A[],int &n)
    {
    	for(int i=0;i<n-1;i++)
    	{
    		for(int j=i+1;j<n;j++)
    		{
    			if(A[i]==A[j])
    			{
    				Delete(A,A[j],n);
    				if(A[i]==A[j])
    				{
    					j--;
    				}
    			}
    		}
    	}
    }
    void Delete(int A[100],int m,int &n)
    {
    	for(int i=m;i<n;i++)
    	{
    		A[i]=A[i+1];
    	}
    	n--;
    }
    Good luck.!!
    ttecak ?

  3. #3
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Đơn giản thêm tí nữa nè T_T!
    PHP Code:
    #include <cstdio>

    int main(){
     
      
    int arrD[7] = {1,2,2,2,1,3,4};
      
    bool _istheSame
      for(
    int _precedence _precedence 7_precedence++)
      {
        
    _istheSame false;
        for(
    int _forward _precedence 1_forward >= 0_forward--){
          if(
    arrD[_forward] == arrD[_precedence])
          {
            
    _istheSame true;
            
    _forward = -1;
          }
        }

        if(
    _istheSame == false)
          
    printf("%d %s"arrD[_precedence], ",");
      }
      
      return 
    0;

    Đã được chỉnh sửa lần cuối bởi rox_rook : 27-02-2008 lúc 05:08 PM.

  4. #4
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Ha R2 học hành gì kì quá nghen. Bài này đơn giản thôi.
    Đầu tiên cậu tạo 1 mảng phụ ( ko có cũng được - nhưng thế cho fan của beckam hiểu ). Duyệt qua mảng chính lấy thằng nhỏ nhất bỏ vào. Nếu trùng thì ko bỏ và tiếp tục tìm thằng tiếp theo.

    Tớ chỉ nêu ra cái hướng thế thôi cậu code đi. Ko được thì tớ code cho.
    Đã được chỉnh sửa lần cuối bởi kidkid : 27-02-2008 lúc 04:35 PM.

  5. #5
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Em cần in ra cái mảng tăng dần và loại bỏ những số nào trùng nhau
    Lại nhầm T_T ! QuickSort + BinarySearch !
    Tạ lỗi T_T :
    PHP Code:
    #include <cstdio>
    #include <algorithm>

    int main(){
     
      
    int arrD[8] = {1,2,9,2,1,3,4,5};
      
    int elements sizeof(arrD) / sizeof(arrD[0]); 
      
    std::sort(arrDarrD elements);
      
    bool _istheSame
      for(
    int _precedence _precedence 8_precedence++)
      {
        
    _istheSame false;
        for(
    int _forward _precedence 1_forward >= 0_forward--){
          if(
    arrD[_forward] == arrD[_precedence])
          {
            
    _istheSame true;
            
    _forward = -1;
          }
        }

        if(
    _istheSame == false)
          
    printf("%d %s"arrD[_precedence], ",");
      }
      return 
    0;

    Đã được chỉnh sửa lần cuối bởi rox_rook : 27-02-2008 lúc 05:07 PM.

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

    Mặc định [ Solved ]Loại bỏ những số trùng nhau, làm cách nào dễ hiểu nhất?

    Tui thấy đơn giản chỉ cần dùng bublesort từ bên trái wa, cái nào trùng thì del lun, ko cần sort.

  7. #7
    Ngày gia nhập
    11 2007
    Bài viết
    153

    Wao vậy bạn có thể show code ra cho mình coi với được không vì mình chưa được học cách này, trường mình nó dạy chán quá
    Mà bác kidkid bảo làm thêm 1 mảng phụ nữa làm gì, em thấy hầu như là đề bài yêu cầu mình thao tác trên duy nhất 1 mảng thôi .Chứ nếu làm thêm 1 mảng phụ thì giáo viên đã không giao bài này cho mình rồi.
    Đã được chỉnh sửa lần cuối bởi comeonbaby : 27-02-2008 lúc 09:37 PM.
    ttecak ?

  8. #8
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Ko cần mảng phụ cũng chẳng cần sort gì hết. Mọi người học quá rồi bị tẩu hoả nhập ma rồi.
    Tại phần tử thứ i với i đi từ 0 đến n - 1, xét các phần tử từ i + 1 đến n, nếu = phần tử i thì đôn dãy lên và giảm n.
    comeonbaby viết code theo như trên là ok.

  9. #9
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Khỏi sort, khỏi mãng phụ luôn T_T :
    C++ not C :
    PHP Code:
    #include <iostream>       
    #include <set>           
    #include <algorithm>    

    int main()
    {
        
    typedef std::multiset<intarrD;
        
    arrD arrayNums;
        
    int elements int();
        
    std::cout << "Please input the number of elements." << '\n';
        
    std::cin >> elements;
        
    int num;
        for(
    int x 0elements; ++x)
        {
            
    std::cout << "Enter : \n";
            
    std::cin >> num
            
    arrayNums.insert(num);
        }
        
    std::cout << "Original.\n";
        
    std::copy(arrayNums.begin(), arrayNums.end(), std::ostream_iterator<int>(std::cout" "));
        
    std::cout << '\n';
        
    std::cout << "After.\n";
        
    arrD::iterator iss arrayNums.begin();
        while(
    iss != arrayNums.end())
        {
            
    std::cout << *iss << " "
            
    arrayNums.erase(*iss);
            
    iss arrayNums.begin();
        }  
        
        return 
    0;


  10. #10
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Lão rox này càng ngày càng viết code khó hiểu.

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

  1. Bài tập C++ Viết hàm loại bỏ tất cả các phần tử có giá trị trùng nhau
    Gửi bởi billykun trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 10
    Bài viết cuối: 09-07-2012, 12:29 PM
  2. 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
  3. Bài tập C++ Sắp xếp mảng sau khi đã loại bỏ những phần tử trùng nhau
    Gửi bởi tuanvu_n trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 19
    Bài viết cuối: 29-06-2010, 08:23 PM
  4. [ Solved ]Tạo số ngẫu nhiên không trùng nhau
    Gửi bởi jacking_nguyen1 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 31
    Bài viết cuối: 23-09-2008, 06:41 PM
  5. [ Solved ]Giúp đỡ tôi cách loại các phần tử mảng trùng nhau
    Gửi bởi md_vn trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 9
    Bài viết cuối: 25-08-2008, 09:45 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