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

Đề tài: Bài tập giải thuật | sắp xếp ma trận

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

    Mặc định Bài tập giải thuật | sắp xếp ma trận

    Các pác giúp newbie với.Cho ma trận m xn .Sắp xếp theo thứ tự tăng dần và in ra màn hình ma trận m x n nhưng có chiều tăng dần như sau :


    thanks các pác trước.
    Attached Thumbnails Attached Thumbnails untitled.bmp  

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

    em đã viết nhưng chạy trên TC30 thôi(chạy tốt) còn trên BC trên trường ko hiểu sao ko chạy đc.khi mình nhập cỡ mảng là 2x2 chẳng hạn thì chuong trình lại cho nhập phần tử 1 phan tu a[3x3] rồi đua luôn ra kết quả .tất nhiên là ko chính xác.có bác nào xài BC for Dos xem hộ em cái.Thanks
    Code:
    #include<stdio.h>
    #include<conio.h>
    #include<alloc.h>
    #include<stdlib.h>
    void main()
    {
      int **a,*b,c,t,k,n,m,i,max,j,l,z, s, u, v, p, q;
      clrscr();
    
    printf("\n kich thuoc:"); scanf("%d%d",&n,&m);
      l=m*n;
      a=(int**)malloc(n*sizeof(int));
      b=(int*)malloc(l*sizeof(int));
      for(i=1;i<=n;i++)
      a[i]=(int*)malloc(m*sizeof(int));
      //----------nhap gia tri cac phan tu cua mang-------------//
      printf("\nnhap gia tri cac phan tu cua mang.");
      for(i=1;i<=n;i++)
    	for(j=1;j<=m;j++)
    	 {printf("\na[%d][%d]=",i,j); scanf("%d",&a[i][j]); }
    //----------------mang truoc khi sap xep.-----------//
      printf("\nmang truoc khi sap xep.");
      printf("\n");
      for(i=1;i<=n;i++)
    	{for(j=1;j<=m;j++)
    	 printf("%5d",a[i][j]);
    	 printf("\n");
    	}
      //-------------------------chuyen cac phan tu vao mang 1 chieu.-------------------------//
      for(i=1,k=1;i<=n;i++)
      for(j=1;j<=m;j++,k++) b[k]=a[i][j];
      //sap xep theo thu tu tang dan.//
      for(k=1;k<=l;k++)
      {max=1;
      for(t=2;t<=l-k+1;t++) if(b[t]>b[max]) max=t;
      c=b[max]; b[max]=b[l-k+1];
      b[l-k+1]=c;
      }
      //--------------in ra mang 1 chieu. ---------------//
      printf("\n Mang B sau khi sap xep .");
      printf("\n");
      for(k=1;k<=l;k++)
      printf("%5d",b[k]);
      //-------------------------------------------//
      t = -1; s = 0;
    	for (i =m ; i >= 1; --i) {
    		t = -t;
    		u = 1, v = i;
    		if (t == -1) {
    			while ((u <= n) && (v <= m)) {
    				++s;
    				a[u][v] = b[s];
    				++u; ++v;
    			}
    		} else {
    			p = 0;
    			while ((u <= n) && (v <= m)) {
    				++p; ++u; ++v;
    			}
    			q = s + p;
    			u = 1; v = i;
    			while ((u <= n) && (v <= m)) {
    				++s;
    				a[u][v] = b[q];
    				++u; ++v; --q;
    			}
    		}
    	}
    
    	/* cot */
    	a[0][0] = b[0];
    	for (i = 2; i <= n; ++i) {
    		t = -t;
    		u = i, v = 1;
    		if (t == -1) {
    			while ((u <= n) && (v <= m)) {
    				++s;
    				a[u][v] = b[s];
    				++u; ++v;
    			}
    		} else {
    			p = 0;
    			while ((u <= n) && (v <= m)) {
    				++p; ++u; ++v;
    			}
    			q = s + p;
    			u = i; v = 1;
    			while ((u <= n) && (v <= m)) {
    				++s;
    				a[u][v] = b[q];
    				++u; ++v; --q;
    			}
    		}
    	}
     //--------------------------------------------------//
     printf("\nKet quan cuoi cung\n");
      printf("\n");
      for(i=1;i<=n;i++)
      {for(j=1;j<=m;j++)
      printf("%5d",a[i][j]);
      printf("\n");
      }
     for(i=1;i<=n;i++) free(a[i]);
     free(a);
     free(b);
    getch();
    }
    Đã được chỉnh sửa lần cuối bởi lamborghini_mclg : 14-04-2009 lúc 02:45 PM.

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

  1. TP HCM [Có trả phí][VC++] Cần tìm người hướng dẫn môn THUẬT GIẢI ( DFS,BFS,...) ( căn bản )
    Gửi bởi KytoSai trong diễn đàn Việc làm IT(tự do)
    Trả lời: 3
    Bài viết cuối: 26-12-2013, 11:13 AM
  2. Giải thuật phân loại cạnh trong DFS áp dụng cho ma trận kề
    Gửi bởi tuant2n 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: 02-05-2011, 04:57 PM
  3. Xin thuật toán sắp xếp ma trận tăng(giảm) không dùng mảng phụ.
    Gửi bởi PTL_PTL2008 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 1
    Bài viết cuối: 22-03-2011, 08:11 PM
  4. Trao đổi về các giải thuật. Mọi người cùng nhau trao đổi nhé!
    Gửi bởi donvuon trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 18
    Bài viết cuối: 03-07-2010, 09:53 PM
  5. Giải thuật | Các thao tác trên Ma trận
    Gửi bởi PoPoPoPo trong diễn đàn Thủ thuật, Tutorials CTDL & Giải thuật
    Trả lời: 0
    Bài viết cuối: 09-10-2006, 10:49 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