Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
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
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

  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
    23

    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
    23

    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ông cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

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