Trộn 2 mảng lại với nhau

Thảo luận trong 'C/C++' bắt đầu bởi rika, 29 Tháng năm 2010.

  1. Offline

    rika

    • Thành Viên Mới

    Số bài viết:
    19
    Đã được thích:
    24
    Điểm thành tích:
    0
    #include<iostream>
    using namespace std;
    void sapxep(int a[],int n)
    {
    int i,j,tg;
    for(i=0;i<n;i++)
    for(j=i+1;j<n;j++)
    if(a>a[j])
    {
    tg=a;
    a=a[j];
    a[j]=tg;
    }
    }
    void main()
    {
    int b[50];
    int a[50];
    int c[100];
    int n,m,i,j,k;
    cout<<"nhap so luong phan tu mang a: ";
    cin>>n;
    for(i=0;i<n;i++)
    {
    cout<<"a["<<i<<"]=";cin>>a;
    }

    cout<<"nhap so luong phan tu mang b: ";
    cin>>m;
    for(j=0;j<m;j++)
    {
    cout<<"b["<<j<<"]=";cin>>b[j];
    }
    //tron 2 mang
    for(i=0;i<n;i++)
    c=a;
    for(j=0;j<m;i++,j++)
    c=b[j];
    sapxep(c,m+n);
    //hien thi mang c
    cout<<"mang sau khi tron va sap xep la: "<<endl;
    for(k=0;k<m+n;k++)
    cout<<"c["<<k<<"]="<<c[k]<<endl;
    }
  2. Offline

    jinyotino

    • Friends

    Số bài viết:
    569
    Đã được thích:
    211
    Điểm thành tích:
    140
    Cái trên không thể gọi là trộn

    Cái này mới trộn 2 mảng lại với nhau nè
    PHP:
    #include <iostream.h>

    void nhap(int A[100],int n,char k)
    {
        
    int i;
        
    cout<<"Nhap gt cho Mang "<<k<<" : "<<endl;
        for(
    i=1;i<=n;i++)
        {
            
    cout<<"Nhap "<<i<<" : ";
            
    cin>>A[i];
        }
    }

    void xuat(int A[100],int n,char k)
    {
        
    int i;
        
    cout<<"\n";
        
    cout<<"Xuat Mang "<<k<<" : ";
        for(
    i=1;i<=n;i++)
        {
            
    cout<<A[i]<<" ";
        }    
        
    cout<<"\n\n";
    }

    int tron2mang(int A[100],int B[100],int n,int m)
    {
        
    int i,j,vt;
        for(
    i=1;i<=n;i++)
        {
            for(
    j=1;j<=m;j++)
            {
                if(
    A[i]<=B[j])
                {
                    
    vt=j;
                    break;
                }
            }
            for(
    j=m;j>=vt;j--)
                
    B[j+1] = B[j];
            
    B[vt]=A[i];
            
    m+=1;
        }
        return 
    m;
    }

    void main()
    {
        
    int n,m;
        
    int A[100],B[100];
        
    cout<<"Nhap n : ";
        
    cin>>n;
        
    nhap(A,n,'A');
        
    cout<<"Nhap m : ";
        
    cin>>m;
        
    nhap(B,m,'B');    
        
    xuat(A,n,'A');
        
    xuat(B,m,'B');
        
    tron2mang(A,B,n,m);
        
    xuat(B,m,'C');
    }
  3. Offline

    rika

    • Thành Viên Mới

    Số bài viết:
    19
    Đã được thích:
    24
    Điểm thành tích:
    0
    1 bài có nhiều cách viết khác nhau chứ bộ ! ha ha, test thử là biết MR.Jin
    sunboy thích bài này.
  4. Offline

    jinyotino

    • Friends

    Số bài viết:
    569
    Đã được thích:
    211
    Điểm thành tích:
    140
    Thừa nhận là 1 bài có nhiều cách giải nhưng Cái của ông là nhập 2 mảng đó vào 1 mảng thứ 3, rồi sắp xếp chứ ko phải là trộn. Trộn ở đây có nghĩa là 2 mảng nhập lại với nhau thành 1. Như ở đây là vẫn đảm bảo tăng dần.
    sunboy thích bài này.
  5. Offline

    rika

    • Thành Viên Mới

    Số bài viết:
    19
    Đã được thích:
    24
    Điểm thành tích:
    0
    thì ta dùng 1 mảng trung gian thứ 3 để trộn 2 mảng lại, vẫn đảm bảo tăng dần mà !!! hì hì,hay để ta hỏi thầy thử hen !, ok !!

Chia sẻ trang này

Advertising: Linux system admin | nukeviet | nukeviet 4 | Upload ảnh miễn phí