Announcement

Collapse
No announcement yet.

Kiểm tra ma trận tăng hình xoắn ốc

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [C++] Kiểm tra ma trận tăng hình xoắn ốc

    PHP Code:
    #include "stdafx.h"
    #define MAX 100

    void nhapmatranint &dint &cint a[][MAX],int b[])
    {
        
    int i,j,k=0;
        
    printf("Nhap vao so dong: ");
        
    scanf("%d",&d);
        
    printf("Nhap vao so cot: ");
        
    scanf("%d",&c);
        for(
    i=0;i<d;i++)
            for(
    j=0;j<c;j++)
            {
                
    printf("A[%d][%d]: ",i,j);
                
    scanf("%d",&a[i][j]);
                
    b[k]=a[i][j];//do mang 2 chieu vao mang 1 chieu
                
    k++;
            }
    }
    void sapxeptang(int dint c,int b[])// sap xep mang 1 chieu tang dan
    {
        
    int i,j,t=0;
        for (
    i=0;i<d*c;i++)
            for (
    j=0;j<d*c-1;j++)
                if (
    b[j]>b[j+1])
                {
                    
    t=b[j];
                    
    b[j]=b[j+1];
                    
    b[j+1]=t;
                }
    }
    void matranxoanoc(int d,int cint a[][MAX], int b[])
    {
        
    int i,j,k=0;
    ///////////////////////////////
        
    for(j=0;j<(int(d/2));j++)// int(d/2) la so vong xoan
        
    {
            for (
    i=j;i<(c-(j+1));i++)
            {
                
    a[j][i]=b[k];
                
    k++;
    //////////////////////////////
            
    for (i=j;i<(d-(j+1));i++)
            {
                
    a[i][c-(j+1)]=b[k];
                
    k++;
            };
    //////////////////////////////
            
    for (i=(c-(j+1));i>j;i--)
            {
                
    a[(d-(j+1))][i]=b[k];
                
    k++;
            };
    ///////////////////////////////
            
    for (i=(d-(j+1));i>j;i--);
            {
            
                
    a[i][j]=b[k];
                
    k++;
                
    printf ("gia tri k: %d",k);
                
    printf("\n");
            };
            if (
    k==d*c)
                break;
        }
    }
    void xuatmang(int d,int c,int a[][MAX])
    {
        
    int i,j;

        for(
    i=0;i<d;i++)
            for(
    j=0;j<c;j++)
            {
                
    printf("%d\t",a[i][j]);
                if (
    j==c-1)
                    
    printf("\n");
            }
    }
    void main()
    {
        
    int d,c,a[MAX][MAX],b[10000],k=0;
        
    nhapmatran(d,c,a,b);
        
    sapxeptang(d,c,b);
        
    matranxoanoc(d,c,a,b);
        
    xuatmang(d,c,a);

    Mọi người kiểm tra giúp em bài này, trong quá trỉnh chạy và sửa lỗi nhưng em vẫn không tìm ra chỗ sai, đã chạy thử bằng tay thấy không có vấn đề gì nhưng khi chạy trên máy thì kết quả xuất ra không như ý muốn, em đã thử thêm in giá trị k ra sau mỗi vòng lặp thì k ra kết quả không đúng.
    file.png

  • #2
    PHP Code:
        int i=j=-1,k=0;
        while(
    k<n*n//n là số dòng cột của ma trận vuông
        
    {
            for(++
    i,++j;j<n-i;++ja[i][j]=b[k++];
            for (++
    i,--j;i<=j;++ia[i][j]=b[k++];
            for(--
    i,--j;j>=n-i-1;--ja[i][j]=b[k++];
            for (--
    i,++j;i>j;--ia[i][j]=b[k++];
        } 
    Hồi trước a viết cái ma trận xoắn ốc nó như vầy chứ không có dài như e nên cũng lười nhìn quá .
    Last edited by 11520132; 25-12-2012, 13:30.

    Comment


    • #3
      Anh góp ý chút:
      Em nên tập thói quen dùng ++i thay vì i++ nếu thực sự e chỉ muốn tăng biến i chứ ko quan tâm là dùng trước rồi tăng hay tăng rồi dùng, vì ++i nó ko tạo ra biến tạm nên thực hiện nhanh hơn i++ :sogood:
      Last edited by 11520051; 25-12-2012, 17:08.

      Comment


      • #4
        chữa lỗi

        bạn coi ở phần sắp xếp mảng tăng nha

        Comment


        • #5
          Originally posted by 11520132 View Post
          PHP Code:
              int i=j=-1,k=0;
              while(
          k<n*n//n là số dòng cột của ma trận vuông
              
          {
                  for(++
          i,++j;j<n-i;++ja[i][j]=b[k++];
                  for (++
          i,--j;i<=j;++ia[i][j]=b[k++];
                  for(--
          i,--j;j>=n-i-1;--ja[i][j]=b[k++];
                  for (--
          i,++j;i>j;--ia[i][j]=b[k++];
              } 
          Hồi trước a viết cái ma trận xoắn ốc nó như vầy chứ không có dài như e nên cũng lười nhìn quá .
          Viết kiểu này rất là khó đọc, lỡ mà sai cũng khó sửa.

          Comment

          LHQC

          Collapse
          Working...
          X