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

Đề tài: Sắp xếp trên ma trận

  1. #1
    Ngày gia nhập
    11 2008
    Bài viết
    116

    Exclamation Sắp xếp trên ma trận

    Đề: Nhập các phần tử ma trận. Sắp xếp các dòng tăng dần theo tổng các phần tử trên mỗi dòng.
    VD: 1 9 7
    2 0 4
    3 7 2
    Thì nó phải in ra:
    2 0 4 (tổng = 6)
    3 7 2 (tổng = 12)
    1 9 7 (tổng =17)
    Code em viết:
    Code:
    #include <stdio.h>
    void nhap(int ia[100][100],int &n);
    void xuat(int ia[100][100],int n);
    void xuat(int ia[100][100],int n)
    {
    	for(int i=0;i<n;i++)
    		{
    			for(int j=0;j<n;j++)
    				printf("%d  ",ia[i][j]);
    			printf("\n");
    		}
    			
    }
    void nhap(int ia[100][100],int &n)
    {
    	for(int i=0;i<n;i++)
    		for(int j=0;j<n;j++)
    				{
    					printf("ia[%d][%d]= ",i+1,j+1);
    					scanf("%d",&ia[i][j]);
    				}
    }
    void sapxep(int ia[100][100],int n)
    {
    	int tong[100],i,j,k=0,tongtam,tam,r,q;
    	for(i=0;i<n;i++)              // tính tổng từng dòng sau đó gán tổng đó vào mảng tổng
    		{
    			tong[k]=0;
    			for(j=0;j<n;j++)
    				tong[k]+=ia[i][j];
    			k++;
    		}
    	for(i=0;i<k-1;i++)        // sắp xếp tăng dần
    		for(j=i+1;j<k;j++)
    			if(tong[i]>tong[j])
    			{
    				tam=tong[i];
    				tong[i]=tong[j];
    				tong[j]=tam;
    			}
    	for(r=0;r<k;r++)            // xét từng phần tử trên mảng tổng
    		{	
    			for(i=0;i<n;i++)
    			{
    				tongtam=0;      // tính tổng mỗi dòng gán vào tongtam . nếu phần tử tong[r]==tongtam thì in ra dòng đó
    				for(j=0;j<n;j++)
    					tongtam+=ia[i][j];
    				if(tong[r]==tongtam)
    					for(q=0;q<n;q++)
    						printf("%d  ",ia[i][q]);
    					printf("\n");
    			}			
    		}
    }
    void main()
    {
    	int ia[100][100],n,k;
    	printf("\nnhap cap ma tran: ");
    	scanf("%d",&n);
     	nhap(ia,n);
     	xuat(ia,n);
     	sapxep(ia,n);	
    }
    Cho em hỏi chương trình thì chạy đúng rồi nhưng sao nó in ra kì quá:
    VD: 1 9 7
    2 0 4
    3 7 2
    Thì nó phải in ra:
    2 0 4


    3 7 2


    1 9 7
    Tại sao nó lại có những khoảng cách đó vậy ?
    Đã được chỉnh sửa lần cuối bởi clementboy03 : 04-04-2009 lúc 08:16 PM.

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

    coi lại cái printf("\n") xem đặt đúng chỗ chưa
    nên gọi lại hàm xuất sau khi xắp xếp đừng gộp vào

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

  1. Bài tập C sắp xếp ma trận sao cho tăng dần trên cột và giảm dần trên dòng.
    Gửi bởi detective009 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 08-01-2011, 11:31 AM
  2. return trên C. Trả về giá trị kiểu cấu trúc trên C. Xin chỉ giúp?
    Gửi bởi hoangedward trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 08-01-2010, 09:37 PM
  3. 1 số vấn đề về mảng 2 chiều trên C (ma trận trên C)
    Gửi bởi mitu_0991 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 04-01-2010, 12:10 PM
  4. ma trận trên C++ | Cộng 2 ma trận và in ra kết quả không đúng?
    Gửi bởi principles_007 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 03-01-2010, 09:20 PM
  5. Mảng hai chiều trên C | Nhân hai ma trận trên C
    Gửi bởi nguyendudhv 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: 06-07-2009, 08:26 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