kết quả từ 1 tới 3 trên 3

Tổng Hợp bài tập cơ bản cho mảng 2 chiều

  1. #1
    Ðến Từ
    Yên Bái
    Thành Viên Thứ: 235356
    Giới tính: Nam
    Bài gửi
    745

    Tổng Hợp bài tập cơ bản cho mảng 2 chiều

    đây là những bài cơ bản đối với mảng 2 chiều
    nhập xuất, tính toán, gộp, tách ghép, vvv
    Mã:
    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    #define MAX = 90000
    int snt(int n);
    void nhapmang(int **a, int n, int m);
    void xuatmang(int **a, int n, int m);
    void tinhtong(int **a, int n, int m);
    void tim(int **a, int n , int m);
    void dem(int **a, int n , int m);
    void sapxep(int **a, int n, int m);
    void tinhtoan(int **a, int &n , int &m);
    void daycon(int **a, int n, int m);
    
    
    int main()
    {
        int **a,m,n,chon;
        do
        {
            printf("\n 1. nhap mang");
            printf("\n 2. xuat mang");
            printf("\n 3. tinh tong");
            printf("\n 4. tim phan tu");
            printf("\n 5. dem phan tu");
            printf("\n 6. sap xep");
            printf("\n 7. tinh toan voi mang");
            printf("\n 8. tim day con\n");
            scanf("%d",&chon);
            switch(chon)
            {
                case 1:
                    printf("\nnhap so hang va so cot cua mang\n");
                    scanf("%d %d",&n,&m);// gia su 0 < n,m < MAX
                    int **a = new int*[n] ; 
                    for( int  i = 0 ; i< n ; i++) 
                        {
                            a[i] =  new int[m] ;
                        }
                    nhapmang(a,n,m); break;
                case 2:
                    xuatmang(a, n, m); break;
                case 3:
                    tinhtong(a, n, m); break;
                case 4: 
                    tim(a,n,m); break;
                case 5:
                    dem(a,n,m); break;
                case 6:
                    sapxep(a,n,m); break;
                case 7:
                    tinhtoan(a,n,m); break;
                case 8:
                    daycon(a,n,m); break;
            }
            if (1 > chon || chon > 9)
                printf("nhap sai, moi nhap lai\n");
        }while(0<chon<9);
    }
    int snt(int n)
    {
        if ( n <= 1)
            return 0;
        for ( int i = 2 ; i < n ; i ++)
            if (n%i==0)
                return 0;
        return 1;
    }
    void nhapmang(int **a , int n, int m)
    {
        
        srand((int)time(NULL));
        for(int i = 0 ; i < n ; i ++)
            for(int j = 0 ; j < m ; j ++)
                a[i][j]=rand() % 100 + 1 ;
    }
    void xuatmang(int **a, int n, int m)
    {
        for(int i = 0 ; i < n ; i ++)
            {
                for(int j = 0 ; j < m ; j ++)
                    printf(" %d ",a[i][j]);
                printf("\n");
            }
    }
    
    
    void tinhtong(int **a, int n, int m)
    {
        int chon1,cot;
        int tongchan=0;
        int tongle=0;
        int tongsnt=0;
        printf("\nNhap cot muon tinh ");// tong hang tuong tu nhu tong cot
        scanf("%d",&cot); 
        printf("\n1. tong so chan");
        printf("\n2. tong so le");
        printf("\n3. tong so nguyen to");
        scanf("%d",&chon1);
        switch(chon1)
        {
            case 1:    
                for (int i = 0 ; i < n ; i ++)
                    if ( a[i][cot]%2 ==0 )
                        tongchan = tongchan + a[i][cot];
                printf("tong chan cua mang la %d",tongchan);
                break;
            case 2:    
                for (int i = 0 ; i < n ; i ++)
                    if ( a[i][cot]%2 != 0 )
                        tongle = tongle + a[i][cot];
                printf("tong le cua mang la %d",tongle);
                break;
            case 3:
                for (int i = 0 ; i < n ; i ++)
                    if ( snt(a[i][cot])== 1)
                        tongsnt = tongsnt + a[i][cot];
                printf("tong snt cua mang la %d",tongsnt);
                break;
            default:
                printf("chon sai! Exit!!!");
                
        }
    }
    void tim(int **a, int n , int m)
    {
        int chon1,tmp,tmp1;
        printf("\n1. Tim tren hang "); // cot tuong tu
        printf("\n2. Tim tren duong cheo chinh "); // cheo phu tuong tu 
        printf("\n3. Tim tren duong bien\n");
        do 
        {
            scanf("%d",&chon1);
            if ( n != m && chon1==2)
                printf("\n Lua chon sai! Khong phai ma tran vuong");
        }while ( n==m && chon1!=2);
        switch (chon1)
        {
            case 1:
                {
                int dem=0;
                printf("\nNhap hang va so muon tim muon tim ");
                scanf("%d %d",&tmp,&tmp1);
                for(int j = 0; j < m ; j++ )
                        if (a[tmp][j]==tmp1)
                            {
                                dem++;
                                printf("\n So muon tim o vi tri %d tren hang %d",j,tmp);
                            }
                if (dem==0)
                    printf("\n Khong co so can tim tren hang %d",tmp);
                break;
                }
            case 2:
                {
                int dem=0;
                printf("\nNhap so muon tim ");
                scanf("%d",&tmp);
                for(int i = 0 ; i < n ; i ++)
                    for(int j = 0 ; j < m ; j ++)
                        if ( i==j && a[i][j] == tmp)
                            {
                                printf("\n So muon tim o vi tri a[%d][%d] ",i,j);
                                dem++;
                            }
                if (dem==0)
                    printf("\n Khong co so can tim tren duong cheo chinh");
                break;
                }
            case 3:
                {
                int dem=0;
                printf("\nNhap so muon tim ");
                scanf("%d",&tmp);
                for ( int j = 0 ; j < n ; j ++ )
                    if ( a[0][j] == tmp)
                    {    
                        printf("\n So muon tim o vi tri a[0][%d] ",j);
                        dem++;
                    }
                for ( int i = 0 ; i < n ; i ++ )
                    if ( a[i][m-1] == tmp)
                    {    
                        printf("\n So muon tim o vi tri a[%d][%d] ",i,m-1);
                        dem++;
                    }
                for ( int j = m-1 ; j >= m ; j -- )
                    if ( a[n-1][j] == tmp)
                    {    
                        printf("\n So muon tim o vi tri a[%d][%d] ",n-1,j);
                        dem++;
                    }
                for ( int i = n-1 ; i >= 0 ; i -- )
                    if ( a[i][m-1] == tmp)
                    {    
                        printf("\n So muon tim o vi tri a[%d][%d] ",i,m-1);
                        dem++;
                    }
                if (dem==0)
                    printf("\n Khong co so can tim tren duong bien");
                break;
                }
            default:
                printf("chon sai! Exit!!!");
        }
    }
    void dem(int **a, int n , int m)
    {
        int tmp;
        int dem=0;
        printf("\n Nhap so hang muon dem "); // dem tren cot tuong tu
        scanf("%d",&tmp);
        for ( int j = 0 ; j <= m ; j ++ )
            if ( snt(a[tmp][j]) == 1 )   //dem snt, dem so chan so le tuong tu
                dem++;
        printf("\n Hang %d co %d so nguyen to ",tmp,dem);
        if ( dem == 0 )
        printf("\n Hang %d khong co so nguyen to",tmp);
    }
    void sapxep(int **a, int n, int m)// theo chieu tang, tu trai qua phai, giam tuong tu
    {
        int tmp;
        if ( n*m == 1)
            {
                printf(" mang k sap xep dc");
                return ;
            }
        for (int i = 0 ; i < n*m-1 ; i ++)
            for ( int j = i+1 ; j < n*m ; j ++)
                if ( a[j/m][j%m] <= a[i/m][i%m] )
                    {
                        tmp = a[i/m][i%m];
                         a[i/m][i%m] = a[j/m][j%m];
                         a[j/m][j%m] = tmp;        
                    }
    }
    void tinhtoan(int **a, int &n , int &m)
    {
        int chon1;
        printf("\n1. Tinh tong");
        printf("\n2. Tinh tich \n");
        scanf("%d",&chon1);
        switch(chon1)
        {
            case 1:
            {
                int **b = new int*[n] ; 
                for( int  i = 0 ; i< n ; i++) 
                    {
                        b[i] =  new int[m] ;
                    }
                srand((int)time(NULL));
                for(int i = 0 ; i < n ; i ++)
                    for(int j = 0 ; j < m ; j ++)
                        b[i][j]=rand() % 100 + 1 ;
                // tao mang b co cung kick thuoc voi mang a
                for(int i = 0 ; i < n ; i ++)
                    for(int j = 0 ; j < m ; j ++)
                        a[i][j]+=b[i][j];
            }
            case 2:
            {
                int **b = new int*[m] ; 
                for( int  i = 0 ; i< m ; i++) 
                    {
                        b[i] =  new int[n] ;
                    }
                srand((int)time(NULL));
                for(int i = 0 ; i < m ; i ++)
                    for(int j = 0 ; j < n ; j ++)
                        b[i][j]=rand() % 100 + 1 ;
                // tao mang b co so hang la so cot cua mang a, so cot la so hang cua mang a
                for(int i = 0 ; i < n ; i++)
                      for( int j = 0 ; j < n ; j++)
                        {
                            a[i][j]=0;
                            for( int k = 0 ; k < m ; k++ )
                                    a[i][j] += a[i][k] * b[k][j];
                          }
            }
        }
    }
    void daycon(int **a, int n, int m)
    {
        // tim day tang
        int dem=1,dem1=1,tmp,i=0;
        int vitri=0,vitri1=0;
        printf("\nNhap hang muon tim ");// cot tuong tu 
        scanf("%d",&tmp);
        while(i < n)
        {
            if ( a[tmp][i] < a[tmp][i+1])
            {
                vitri = i + 1; // vi tri dang set
                dem++; //so luong cua day
            }
            else dem=1;
            if(dem1 < dem)
            {
                dem1=dem;//dem 1 la day dai nhat
                vitri1 = vitri;// vitri1 la vi tri cuoi cung cua day dai nhat
            }
            i++;
        }
        for(int  j = vitri1-dem1+1 ; j <= vitri1 ; j++)
             printf("%d, ",a[tmp][j]);
    //    printf("\n Day da sap xep dai nhat co %d phan tu",dem1);
    }

    mình chỉ test với những số cơ bản, tại chưa có thời gian test mấy số bí bí nên có chổ nào sai xót hoặc k hiểu cứ cmt mình sẽ giải thích + fixx lại code
    Tks all!
    class TapLamHacker{ private String TráiTim;
    private void Set_TráiTim(String Gái){ this.TráiTim = "Thanh Trâm"; }
    public String Get_TráiTim(){ return "Thanh Trâm"; }
    public String ToString(){return"My love is Thanh Trâm For one future go shopping not concerned about price ";}
    } Liên hệ Skype: Taplamhacker
    Quick reply to this message Trả lời       

  2. Đã cảm ơn taplamhacker:



  3. #2
    Ðến Từ
    Hà Nội
    Thành Viên Thứ: 278100
    Giới tính: Nữ
    Bài gửi
    692

    Reply: Tổng Hợp bài tập cơ bản cho mảng 2 chiều

    Little Princess KH

  4. #3
    Ðến Từ
    Nam Định
    Thành Viên Thứ: 308800
    Giới tính: Nam
    Bài gửi
    4

    Reply: Tổng Hợp bài tập cơ bản cho mảng 2 chiều

    Mấy bác viết code cho lên codepad.org cho dễ down