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ố 22 kết quả

Đề tài: Ma trận xoắn ốc | Ma trận xoắn chôn ốc

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

    Mặc định Ma trận xoắn ốc | Ma trận xoắn chôn ốc

    Sau đây là code Ma trận xoắn chôn ốc

    C Code:
    1. /* Bai tap 1_88 - Dien gia tri cho mot mang vuong theo chieu kim dong ho */
    2. #include <stdio.h>
    3.  
    4. void main()
    5. {
    6.   int n, w, hang, cot, chanhangtang, chanhanggiam, chancottang, chancotgiam;
    7.   int matran[12][12], tang, giam;
    8.  
    9.   printf("\n\nChuong trinh in ma tran dac biet.");
    10.   do {
    11.     printf("\nNhap kich thuoc cua ma tran (3 <= n <= 12) : ");
    12.     scanf("%d%*c",&n);
    13.   } while (! (n >=3 && n<=12) );
    14.   hang = cot = 0;
    15.   chanhangtang = chancottang = n-1;
    16.   chanhanggiam = chancotgiam = 0;
    17.   /*
    18.      tang co 4 gia tri :
    19.        tang = 0 -> tang cot
    20.        tang = 1 -> tang hang
    21.        tang = 2 -> giam cot
    22.        tang = 3 -> giam cot
    23.   */
    24.   tang = 0;
    25.   for (w=0; w<n*n; w++)
    26.   {
    27.      matran[hang][cot]= w + 1;
    28.      switch(tang)
    29.      {
    30.        case 0 : if (cot < chancottang)
    31.                    cot++;
    32.                 else
    33.                 {
    34.                   tang++;     // Chuyen sang tang hang
    35.                   chanhanggiam++;
    36.                   hang++;
    37.                 }
    38.                 break;
    39.        case 1 : if (hang < chanhangtang)
    40.                    hang++;
    41.                 else
    42.                 {
    43.                   tang++;     // Chuyen sang giam cot
    44.                   chancottang--;
    45.                   cot--;
    46.                 }
    47.                 break;
    48.        case 2 : if (cot > chancotgiam)
    49.                    cot--;
    50.                 else
    51.                 {
    52.                   tang++;     // Chuyen sang giam hang
    53.                   chanhangtang--;
    54.                   hang--;
    55.                 }
    56.                 break;
    57.        case 3 : if (hang > chanhanggiam)
    58.                    hang--;
    59.                 else
    60.                 {
    61.                   tang=0;     // Chuyen sang tang cot
    62.                   chancotgiam++;
    63.                   cot++;
    64.                 }
    65.                 break;
    66.      }
    67.   }
    68.   for (hang=0; hang < n; hang++)
    69.   {
    70.     printf("\n");
    71.     for (cot=0; cot < n; cot++)
    72.       printf("%4d", matran[hang][cot]);
    73.   }
    74.   getch();
    75. }



    dạo này thấy trên c-việt có nhiều bạn hỏi ma trận xoán ốc,mình thì mới ra nhập,nên post lên mọi người tham khảo tí,hjhj

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

    bro ui,cũng kiểu bài như dzị nhưng làm sao để nhập các phần tử của ma trận từ bàn phím.mới lò mò wa ma mảng,ma trận,ko hỉu lém ^^

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

    bó tay
    Code:
    # include <conio.h>/*ham getch va ham clrscr()*/
    # include <stdio.h>/*ham printf va ham scanf*/
    void main ()
    
    {
    
    int m,n,i,j;
    
    float a[100][100];
    
    clrscr ();
    
    printf ("\n Nhap so hang MT :");
    
    scanf ("%d",&n);
    
    printf ("\n Nhap so cot MT :");
    
    scanf ("%d",&m);
    
    for (i=0;i<n;i++)
    
    for (j=0;j<m;j++)
    
    {
    
    printf ("\n Nhap A[%d][%d]" ,i+1,j+1);
    
    scanf ("%f",&a[i][j]);
    
    }
    
    for (i=0;i<n;i++)
    
    {
    
    printf ("\n");
    
    for (j=0;j<m;j++)
    
    printf ( " %6.2f  ",a[i][j]  );
    
    }
    
    getch();
    
    }

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

    cho mình hỏi sau khi đã thiết lập một ma trận rồi. Giờ muốn thay đổi một giá trị a[i][j] bất kỳ trong ma trận đó thì phải làm sao??? Thứ 2 là in ra giá trị của một phần tử bất kỳ trong ma trận ???
    NO

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

    chỉ cần scanf("%d",&a[i][j]);
    và printf("%d[%d][%d]",a[i][j]); là được
    với i và j là các giá trị bất kỳ được lấy từ hàm random(n);

  6. #6
    Ngày gia nhập
    03 2008
    Bài viết
    22

    Mặc định Ma trận xoắn ốc | Ma trận xoắn chôn ốc

    chỉ cần scanf("%d",&a[i][j]);
    uhm thanks bro. Nhưng khi thực hiện scanf xong mình in ra ma trận mới vẫn không thấy giá trị a[i][j] trên kia thay đổi là sao ta??? Xem giúp mình với
    Code:
    # include <conio.h>/*ham getch va ham clrscr()*/
    # include <stdio.h>/*ham printf va ham scanf*/
    void VaoMT ()
    {
    int m,n,i,j;
    float a[100][100];
    printf ("\n Nhap so hang MT :");
    scanf ("%d",&n);
    printf ("\n Nhap so cot MT :");
    scanf ("%d",&m);
    for (i=0;i<n;i++)
    for (j=0;j<m;j++)
    {
    printf ("\n Nhap A[%d][%d]=" ,i+1,j+1);
    scanf ("%f",&a[i][j]);
    }
    for (i=0;i<n;i++)
    {
    printf ("\n");
    for (j=0;j<m;j++)
    printf ( " %6.2f  ",a[i][j]  );
    }
    
    /*==========Bat dau nhap lai mot phan tu============*/
    printf("\n phan tu nhap lai o hang:");
    scanf("%d",&i);
    printf("\n cot thu:");
    scanf("%d",&j);
    printf("nhap lai a[%d][%d]=",i,j);
    scanf("%f",&a[i][j]);
    printf("ma tran moi:\n");
    for (i=0;i<n;i++)
    {
    printf ("\n");
    for (j=0;j<m;j++)
    printf ( " %6.2f  ",a[i][j]  );
    }
    }
    main()
    {
        VaoMT();
    }
    NO

  7. #7
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Không biết code đó đầy đủ những gì mà dài thế không biêt,code của mình nè:
    Code:
    #include<stdio.h>
    #include<conio.h>
    
    int main()
    {
            int b[100][100];
            int m,n,hang,cot;
            int giatri=0,batdau=1;
            printf("Nhap so hang: ");scanf("%d",&n);
            printf("Nhap so cot: ");scanf("%d",&m);
            hang=n;cot=m;
            int sovong;
            if (n%2==0) sovong=n/2;
                else sovong=(n/2)+1;
                
            while (batdau<=sovong)
            {
    
    int i;
        for (i=batdau;i <= cot;i++) { giatri++;b[batdau][i]=giatri;};
        if (giatri==m*n) break;
        for (i=batdau+1;i <= hang;i++) { giatri++;b[i][cot]=giatri;};
        if (giatri==m*n) break;
        for (i=cot-1;i>=batdau;i--) { giatri++;b[hang][i]=giatri;};
        if (giatri==m*n) break;
        for (i=hang-1;i>batdau;i--) { giatri++;b[i][batdau]=giatri;};
        if (giatri==m*n) break;
                batdau++;hang--;cot--;
                }
                
            int i,j;
            for (i=1;i<n+1;i++)
            {
               for (j=1;j<m+1;j++)
                  printf("%5d",b[i][j]);
                  printf("\n");
              }    
            getch();
    }
    *Yêu cầu thanhnam46 hỏi mấy cái đó thì hỏi ở box khác nhé!

  8. #8
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Mặc định Ma trận xoắn chôn ốc

    Cái trên lúc mới học, cái này mới viết nên hay hơn nè:
    C Code:
    1. /*
    2. In ma tran theo hinh xoay oc tang dan cac gia tri
    3. */
    4. #include <stdio.h>
    5.  
    6. void hoang(int a[][100],int m, int n,int x,int *t);
    7.  
    8. int main()
    9. {
    10.      int m,n,i,j;
    11.      int a[100][100];
    12.      printf("\n- Nhap so hang: ");scanf("%d",&m);
    13.      printf("\n- Nhap so cot: ");scanf("%d",&n);
    14.      for(i=1;i<=m;i++)
    15.           for(j=1;j<=n;j++) a[i][j]=0;
    16.      int t=1,x=1,m1=m,n1=n;
    17.      while(t<=(m*n))
    18.      {
    19.           hoang(a,m1,n1,x,&t);
    20.           x++;m1--;n1--;
    21.      }
    22.      for(i=1;i<=m;i++)
    23.      {
    24.           for(j=1;j<=n;j++)
    25.                printf("%4d",a[i][j]);
    26.           printf("\n");
    27.      }
    28. }
    29.  
    30. void hoang(int a[][100],int m, int n,int x,int *t)
    31. {
    32.      int i=x,j=x;
    33.           while (j<n)
    34.           {
    35.                a[i][j++]=*t;
    36.                (*t)++;
    37.           }
    38.           while (i<m)
    39.           {
    40.                a[i++][j]=*t;
    41.                (*t)++;
    42.           }
    43.           while (j>x)
    44.           {
    45.                a[i][j--]=*t;
    46.                (*t)++;
    47.           }
    48.           while (i>x)
    49.           {
    50.                a[i--][j]=*t;
    51.                (*t)++;
    52.           }
    53. }
    54.  
    55. /*
    56. VD: m=4,n=5
    57.      1  2  3  4  5
    58.     14 15 16 17  6
    59.     13 20 19 18  7
    60.     12 11 10  9  8
    61. */

  9. #9
    Ngày gia nhập
    12 2011
    Bài viết
    2

    Mặc định Cũ rồi nhưng vẫn đính chính :)

    Khi chạy chương trình của bạn với m, n = 3 thử xem )


    Trích dẫn Nguyên bản được gửi bởi QuangHoang Xem bài viết
    Cái trên lúc mới học, cái này mới viết nên hay hơn nè:
    C Code:
    1. /*
    2. In ma tran theo hinh xoay oc tang dan cac gia tri
    3. */
    4. #include <stdio.h>
    5.  
    6. void hoang(int a[][100],int m, int n,int x,int *t);
    7.  
    8. int main()
    9. {
    10.      int m,n,i,j;
    11.      int a[100][100];
    12.      printf("\n- Nhap so hang: ");scanf("%d",&m);
    13.      printf("\n- Nhap so cot: ");scanf("%d",&n);
    14.      for(i=1;i<=m;i++)
    15.           for(j=1;j<=n;j++) a[i][j]=0;
    16.      int t=1,x=1,m1=m,n1=n;
    17.      while(t<=(m*n))
    18.      {
    19.           hoang(a,m1,n1,x,&t);
    20.           x++;m1--;n1--;
    21.      }
    22.      for(i=1;i<=m;i++)
    23.      {
    24.           for(j=1;j<=n;j++)
    25.                printf("%4d",a[i][j]);
    26.           printf("\n");
    27.      }
    28. }
    29.  
    30. void hoang(int a[][100],int m, int n,int x,int *t)
    31. {
    32.      int i=x,j=x;
    33.           while (j<n)
    34.           {
    35.                a[i][j++]=*t;
    36.                (*t)++;
    37.           }
    38.           while (i<m)
    39.           {
    40.                a[i++][j]=*t;
    41.                (*t)++;
    42.           }
    43.           while (j>x)
    44.           {
    45.                a[i][j--]=*t;
    46.                (*t)++;
    47.           }
    48.           while (i>x)
    49.           {
    50.                a[i--][j]=*t;
    51.                (*t)++;
    52.           }
    53. }
    54.  
    55. /*
    56. VD: m=4,n=5
    57.      1  2  3  4  5
    58.     14 15 16 17  6
    59.     13 20 19 18  7
    60.     12 11 10  9  8
    61. */
    còn đây là code của mình
    dễ hiểu cho ai mới học

    Code:
    #include <iostream>
    #include <iomanip>
    
    using namespace std;
    
    int main(){
    	int A[20][20];//ma tran
    	int n,m;//so phan tu muon nhap
    	
    	//nhap so hang so cot m n
    	cout<<"Nhap kich thuoc cua ma tran n,m >=3\n";
    	do{
    		cout<<"Nhap n <=10: ";
    		cin>>n;
    		cout<<"Nhap m <=10: ";
    		cin>>m;
    	}while( n<=2 || n>10 || m<=2 || m>10 );
    	
    	//nhap ma tran A
    	int i=0,j=0,t=1,p=0, nt=n, mt=m;
    	while( t <= (n*m) ){
    		i=j=p;
    		while(j<mt){
    			A[i][j++] = t;
    			t++;
    		}
    		j--;i++;
    		while(i<nt){
    			A[i++][j] = t;
    			t++;
    		}
    		i--;j--;
    		while(j>p){
    			A[i][j--] = t;
    			t++;
    		}
    		while(i>p){
    			A[i--][j] = t;
    			t++;
    		}
    		nt--;
    		mt--;
    		p++;
    		
    	}
    	
    	//in ma tran A xoan oc
    	cout<<"Ma tran xoan oc:\n";
    	for(int i=0; i < n; i++){
    		for(int j=0; j < m; j++){
    			cout<<setw(4)<<A[i][j];
    		}
    		cout<<endl;
    	}
    	
    	system("pause");
    	return 0;
    }

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

    Trích dẫn Nguyên bản được gửi bởi QuangHoang Xem bài viết
    Cái trên lúc mới học, cái này mới viết nên hay hơn nè:
    C Code:
    1. /*
    2. In ma tran theo hinh xoay oc tang dan cac gia tri
    3. */
    4. #include <stdio.h>
    5.  
    6. void hoang(int a[][100],int m, int n,int x,int *t);
    7.  
    8. int main()
    9. {
    10.      int m,n,i,j;
    11.      int a[100][100];
    12.      printf("\n- Nhap so hang: ");scanf("%d",&m);
    13.      printf("\n- Nhap so cot: ");scanf("%d",&n);
    14.      for(i=1;i<=m;i++)
    15.           for(j=1;j<=n;j++) a[i][j]=0;
    16.      int t=1,x=1,m1=m,n1=n;
    17.      while(t<=(m*n))
    18.      {
    19.           hoang(a,m1,n1,x,&t);
    20.           x++;m1--;n1--;
    21.      }
    22.      for(i=1;i<=m;i++)
    23.      {
    24.           for(j=1;j<=n;j++)
    25.                printf("%4d",a[i][j]);
    26.           printf("\n");
    27.      }
    28. }
    29.  
    30. void hoang(int a[][100],int m, int n,int x,int *t)
    31. {
    32.      int i=x,j=x;
    33.           while (j<n)
    34.           {
    35.                a[i][j++]=*t;
    36.                (*t)++;
    37.           }
    38.           while (i<m)
    39.           {
    40.                a[i++][j]=*t;
    41.                (*t)++;
    42.           }
    43.           while (j>x)
    44.           {
    45.                a[i][j--]=*t;
    46.                (*t)++;
    47.           }
    48.           while (i>x)
    49.           {
    50.                a[i--][j]=*t;
    51.                (*t)++;
    52.           }
    53. }
    54.  
    55. /*
    56. VD: m=4,n=5
    57.      1  2  3  4  5
    58.     14 15 16 17  6
    59.     13 20 19 18  7
    60.     12 11 10  9  8
    61. */
    bài này cứ với số lẻ là tịt rồi cậu

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

  1. Bài tập C | Ma trận xoắn chôn ốc trong C
    Gửi bởi tampointer trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 22
    Bài viết cuối: 28-04-2013, 09:25 PM
  2. Bài tập C Điền các số của 1 ma trận bất kì theo hình xoắn ốc với lập trình C
    Gửi bởi dzuncoi trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 05-08-2011, 11:58 PM
  3. Bài tập C++ Tạo ma trận hình xoắn ốc 8x8
    Gửi bởi xoycontinue 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: 09-05-2011, 09:51 PM
  4. Bài tập C | Ma trận xoắn ốc trong C?
    Gửi bởi nht2007 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 11-05-2009, 05:18 PM
  5. Ma Trận xoắn ốc | Sắp xếp ma trận xoắn ốc!!!!!!
    Gửi bởi xongvaoday 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: 03-05-2009, 01:08 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