Từ 1 tới 6 trên tổng số 6 kết quả

Đề tài: Sap xep ma tran(fix dùm em).

  1. #1
    Ngày gia nhập
    01 2009
    Bài viết
    1

    Unhappy Sap xep ma tran(fix dùm em).

    yêu cầu là sắp xếp từng dòng,cột(tăng,giảm).
    Sao em viết có khi chaỵ đúng,khi chạy sai.Khi thực hiện 1 hàm sắp xếp thì mảng gốc bị thay đổi, hàm sau lấy mảng đã sắp xếp chạy nên sai lun.Ai giúp em với.Sory!em post nhằm.Mod chuyen bài qua c++ dùm em nha.

    Code:
    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    #define MAX 50
    
    int d,c; //khai bao dong va cot
    
    void hoanvi(int &a,int &b) //ham dao vi tri
    {
    	int tam;
    	tam=a;
    	a=b;
    	b=tam;
    }
    void nhap(int a[][MAX])
    {
    	printf("\nNhap ma tran (<%d)",MAX);
    	do
    	{
    		printf("\nNhap so dong cho Ma tran: ");
    		scanf("%d",&d);
    		printf("\nNhap so cot cho Ma tran: ");
    		scanf("%d",&c);
    	}while(c<1||c>MAX&&d>MAX||d<1);
    
    	for(int i=0;i<d;i++)
    	{
    		for(int j=0;j<c;j++)
    		{
    			printf("\nNhap vao phan tu a[%d][%d]cua Ma tran: ",i,j);
    			scanf("%d",&a[i][j]);
    
    		}
    	}
    
    
    }
    void xuat(int a[][MAX])
    {
    
    	for(int i=0;i<d;i++)
    	{
    		for(int j=0;j<c;j++)
    	  {
    			printf("%d\t",a[i][j]);
    	  }
    	  printf("\n");
    	}
    }
    void dongtang(int a[][MAX])	//ham sap xep tang dan trong moi dong
    {
    
    	for(int i=0;i<d;i++)
    	{
    		for(int j=0;j<c;j++)
    		{
    			for(int k=j+1;k<c;k++)
    			{
    				if(a[i][j]>a[i][k])
    				{
    					hoanvi(a[i][j],a[i][k]);
    				}
    			}
    		}
    	}
       printf("\nMA TRAN SAU KHI SAP XEP DONG TANG DAN:\n");
       xuat(a);
    }
    void donggiam(int a[][MAX])	//ham sap xep giam dan trong moi dong
    {
    
    	for(int i=0;i<d;i++)
    	{
    		for(int j=0;j<c;j++)
    		{
    			for(int k=j+1;k<c;k++)
    			{
    				if(a[i][j]<a[i][k])
    				{
    					hoanvi(a[i][j],a[i][k]);
    				}
    			}
    		}
    	}
       printf("\nMA TRAN SAU KHI SAP XEP DONG GIAM DAN:\n");
       xuat(a);
    }
    void cottang(int a[][MAX]) 	//ham sap xep tang dan trong moi cot
    {
    
    	for(int j=0;j<c;j++)
    	{
    		for(int i=0;i<d;i++)
    		{
    			for(int k=i+1;k<c;k++)
    			{
    				if(a[i][j]>a[k][j])
    				{
    					hoanvi(a[i][j],a[k][j]);
    				}
    			}
    		}
    	}
       printf("\nMA TRAN SAU KHI SAP XEP COT TANG DAN:\n");
       xuat(a);
    
    }
    void cotgiam(int a[][MAX]) 	//ham sap xep giam dan trong moi cot
    {
    
    	for(int j=0;j<c;j++)
    	{
    		for(int i=0;i<d;i++)
    		{
    			for(int k=i+1;k<c;k++)
    			{
    				if(a[i][j]<a[k][j])
    				{
    					hoanvi(a[i][j],a[k][j]);
    				}
    			}
    		}
       }
       printf("\nMA TRAN SAU KHI SAP XEP COT GIAM DAN:\n");
       xuat(a);
    
    }
    void bai2(int a[][MAX])
    {
    
    	printf("\n\t1.Nhap Ma tran.");
    	printf("\n\t2.In Ma tran.");
    	printf("\n\t3.Sap xep tung dong Matran tang dan.");
    	printf("\n\t4.Sap xep tung dong Matran giam dan.");
    	printf("\n\t5.Sap xep tung cot Matran tang dan.");
    	printf("\n\t6.Sap xep tung cot Matran giam dan.");
    	printf("\n\t7.Ve Menu chinh");
    	char ch;
    	ch=getch();
    	switch(ch)
    	{
    		case '1':
    			clrscr();
    			nhap(a);
    			bai2(a);
    			break;
    		case '2':
    			clrscr();
    			printf("Matran vua nhap");
    			xuat(a);
                		bai2(a);
                		break;
    
    		case '3':
    			clrscr();
    			dongtang(a);
    			bai2(a);
    			break;
    		case '4':
    			clrscr();
    			donggiam(a);
    			bai2(a);
    			break;
    		case '5':
    			clrscr();
    			cottang(a);
    			bai2(a);
    			break;
    		case '6':
    			clrscr();
    			cotgiam(a);
    			bai2(a);
    			break;
    		case '7':printf("Quay ve menu chinh");
    	}
    }
    void main()
    {
    	int a[MAX][MAX];
    	bai2(a);
    	getch();
    }
    Đã được chỉnh sửa lần cuối bởi vmtruong : 13-01-2009 lúc 04:39 PM. Lý do: Post nhằm

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

    bạn thử cho 1 ví dụ mà nó sai xem nào !!!
    I dlatego lubię mówić z tobą !!!

  3. #3
    Ngày gia nhập
    01 2009
    Bài viết
    1

    vd như 1,2,3-3,2,1 khi chuyển qua lại các kiểu sắp xếp sẽ có cái bị sai.(em ngi3 là do mang ban đầu bị thay đổi nên sai).

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

    sai la phai roi !!! mình hỏi trong quá trình so sánh bạn có xét đến việc các phần tử có thế bằng nhau đâu ???
    I dlatego lubię mówić z tobą !!!

  5. #5
    Ngày gia nhập
    12 2008
    Bài viết
    235

    Bạn nói rõ đi chứ.Sắp xếp xong ma trận thay đổi hoàn toàn à?Mà cái này viết theo C nhìu hơn.có chút C++ không đáng kể

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

    Mặc định Sap xep ma tran(fix dùm em).

    Mình đánh dấu ///////// là chỗ sửa nhé!
    Lỗi là do copy paste từ trên xuống nhưng sửa chưa triệt để.
    Cố gắng trình bày code sáng sủa hơn chút nữa.

    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. #include<stdlib.h>
    4. #define MAX 50
    5.  
    6. int d,c; //khai bao dong va cot
    7.  
    8. void hoanvi(int &a,int &b) //ham dao vi tri
    9. {
    10.     int tam;
    11.     tam=a;
    12.     a=b;
    13.     b=tam;
    14. }
    15. void nhap(int a[][MAX])
    16. {
    17.     printf("\nNhap ma tran (<%d)",MAX);
    18.     do
    19.     {
    20.         printf("\nNhap so dong cho Ma tran: ");
    21.         scanf("%d",&d);
    22.         printf("\nNhap so cot cho Ma tran: ");
    23.         scanf("%d",&c);
    24.     }while(c<1||c>MAX||d>MAX||d<1);             //////////
    25.  
    26.     for(int i=0;i<d;i++)
    27.     {
    28.         for(int j=0;j<c;j++)
    29.         {
    30.             printf("\nNhap vao phan tu a[%d][%d]cua Ma tran: ",i,j);
    31.             scanf("%d",&a[i][j]);
    32.  
    33.         }
    34.     }
    35.  
    36.  
    37. }
    38. void xuat(int a[][MAX])
    39. {
    40.  
    41.     for(int i=0;i<d;i++)
    42.     {
    43.         for(int j=0;j<c;j++)
    44.       {
    45.             printf("%d\t",a[i][j]);
    46.       }
    47.       printf("\n");
    48.     }
    49. }
    50. void dongtang(int a[][MAX]) //ham sap xep tang dan trong moi dong
    51. {
    52.  
    53.     for(int i=0;i<d;i++)
    54.     {
    55.         for(int j=0;j<c-1;j++)       //
    56.         {
    57.             for(int k=j+1;k<c;k++)
    58.             {
    59.                 if(a[i][j]>a[i][k])
    60.                 {
    61.                     hoanvi(a[i][j],a[i][k]);
    62.                 }
    63.             }
    64.         }
    65.     }
    66.    printf("\nMA TRAN SAU KHI SAP XEP DONG TANG DAN:\n");
    67.    xuat(a);
    68. }
    69. void donggiam(int a[][MAX]) //ham sap xep giam dan trong moi dong
    70. {
    71.  
    72.     for(int i=0;i<d;i++)
    73.     {
    74.         for(int j=0;j<c-1;j++)  //
    75.         {
    76.             for(int k=j+1;k<c;k++)
    77.             {
    78.                 if(a[i][j]<a[i][k])
    79.                 {
    80.                     hoanvi(a[i][j],a[i][k]);
    81.                 }
    82.             }
    83.         }
    84.     }
    85.    printf("\nMA TRAN SAU KHI SAP XEP DONG GIAM DAN:\n");
    86.    xuat(a);
    87. }
    88. void cottang(int a[][MAX])  //ham sap xep tang dan trong moi cot
    89. {
    90.  
    91.     for(int j=0;j<c;j++)
    92.     {
    93.         for(int i=0;i<d-1;i++)
    94.         {
    95.             for(int k=i+1;k<d;k++)    ///////                                                                
    96.             {
    97.                 if(a[i][j]>a[k][j])
    98.                 {
    99.                     hoanvi(a[i][j],a[k][j]);
    100.                 }
    101.             }
    102.         }
    103.     }
    104.    printf("\nMA TRAN SAU KHI SAP XEP COT TANG DAN:\n");
    105.    xuat(a);
    106.  
    107. }
    108. void cotgiam(int a[][MAX])  //ham sap xep giam dan trong moi cot
    109. {
    110.  
    111.     for(int j=0;j<c;j++)
    112.     {
    113.         for(int i=0;i<d-1;i++)
    114.         {
    115.             for(int k=i+1;k<d;k++)         /////////
    116.             {
    117.                 if(a[i][j]<a[k][j])
    118.                 {
    119.                     hoanvi(a[i][j],a[k][j]);
    120.                 }
    121.             }
    122.         }
    123.    }
    124.    printf("\nMA TRAN SAU KHI SAP XEP COT GIAM DAN:\n");
    125.    xuat(a);
    126.  
    127. }
    128. void bai2(int a[][MAX])
    129. {
    130.  
    131.     printf("\n\t1.Nhap Ma tran.");
    132.     printf("\n\t2.In Ma tran.");
    133.     printf("\n\t3.Sap xep tung dong Matran tang dan.");
    134.     printf("\n\t4.Sap xep tung dong Matran giam dan.");
    135.     printf("\n\t5.Sap xep tung cot Matran tang dan.");
    136.     printf("\n\t6.Sap xep tung cot Matran giam dan.");
    137.     printf("\n\t7.Ve Menu chinh");
    138.     char ch;
    139.     ch=getch();
    140.     switch(ch)
    141.     {
    142.         case '1':
    143.             clrscr();
    144.             nhap(a);
    145.             bai2(a);
    146.             break;
    147.         case '2':
    148.             clrscr();
    149.             printf("Matran vua nhap");
    150.             xuat(a);
    151.                     bai2(a);
    152.                     break;
    153.  
    154.         case '3':
    155.             clrscr();
    156.             dongtang(a);
    157.             bai2(a);
    158.             break;
    159.         case '4':
    160.             clrscr();
    161.             donggiam(a);
    162.             bai2(a);
    163.             break;
    164.         case '5':
    165.             clrscr();
    166.             cottang(a);
    167.             bai2(a);
    168.             break;
    169.         case '6':
    170.             clrscr();
    171.             cotgiam(a);
    172.             bai2(a);
    173.             break;
    174.         case '7':printf("Quay ve menu chinh");
    175.     }
    176. }
    177. void main()
    178. {
    179.     int a[MAX][MAX];
    180.     bai2(a);
    181.     getch();
    182. }

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

  1. Lập trình C++ coi dùm minh bài code sai ở chỗ nào và sữa dùm mình với
    Gửi bởi hchuy94 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 02-09-2013, 10:16 AM
  2. Kỹ thuật C++0x clas ma tran c++(cac pro chi cho sai voi nha )
    Gửi bởi latao159 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 29-12-2012, 03:27 PM
  3. Bài tập C, code nhân 2 ma tran hai chiều
    Gửi bởi maihung1989dn trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 08-03-2012, 11:29 AM
  4. Bài tập C BT C ve ma tran
    Gửi bởi hik133 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 17-12-2011, 06:45 PM
  5. N04 tran duy hung, chung cu n04 tran duy hung,
    Gửi bởi ephat_tt86 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 24-11-2011, 10:59 AM

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