Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 17 kết quả

Đề tài: Sắp Xếp Mảng 1 Chiều Vào Mảng 2 Chiều

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

    Mặc định Sắp Xếp Mảng 1 Chiều Vào Mảng 2 Chiều

    Sắp xếp
    Mảng 1 chiều :
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
    Thành
    Mảng 2 chiều :
    1 3 6 10
    2 5 9 13
    4 8 12 15
    7 11 14 16
    Tương tự với - mảng 1 chiều là a[n*n];
    - mảng 2 chiều là b[n][n];
    Mong các huynh chỉ giúp !
    Thx!!!

  2. #2
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    C Code:
    1. #include <cstdio>
    2. const int Size = 10;
    3.  
    4. int main(){
    5.     int arr1D[Size*Size] = {};
    6.     int arr2D[Size][Size] = {};
    7.    
    8.     int index = 0;
    9.     for(int x = 0; x < Size; ++x){
    10.         for(int y = 0; y < Size; ++y){
    11.             arr2D[x][y] = arr1D[index++];
    12.         }
    13.     }
    14.     return 0;
    15. }

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

    @R_R: sao tui hok hỉu yêu cầu đề bài của bạn kia hỏi là jì?Đọc code của bạn tui cũng hok biết ý bạn là jì luôn.Đem đi chạy thử thì nó có ra kết quả jống như cái test ở trên đâu....Bạn run thử chưa?

    Còn nữa : sao đoạn code này của bạn chạy bị báo error nhỉ? xài VC++
    Code:
    int arr2D[Size][Size] = {}; //syntax error : '}
    => đáng nhẽ ra phải thêm một số 0 vô thì ko báo lỗi nữa!
    No way, No success..

  4. #4
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    C Code:
    1. #include <cstdio>
    2.  
    3. const int Size = 3;
    4. int main(){
    5.     int arr1D[Size*Size] = {1,2,3,4,5,6,7,8,9};
    6.     int arr2D[Size][Size] = {};
    7.    
    8.     int index = 0;
    9.     for(int x = 0; x < Size; ++x){
    10.         for(int y = 0; y < Size; ++y){
    11.             arr2D[x][y] = arr1D[index++];
    12.         }
    13.     }
    14.  
    15.     for(int x = 0; x < Size; ++x){
    16.         for(int y = 0; y < Size; ++y){
    17.             printf("%d", arr2D[x][y]);
    18.         }
    19.         printf("\n");
    20.     }
    21.  
    22.     return 0;
    23. }

    => đáng nhẽ ra phải thêm một số 0 vô thì ko báo lỗi nữa!
    Tui không hề có 1 warning nào ! VC++ có những cái mà chỉ có Billgate ban cho thêm nhưng không hề tồn tại trong standard C++.
    Bỏ 1 con số 0 vào thì ý nghĩa là arr[0][0] = 0, compiler sẽ generate mặc định cho tất cả các phần tử còn lại = 0. chứ không phải con số 0 đó là khai báo cho tất cả.
    Còn bài của tên kia là hắn muốn in ra zich zac cái ma trận, nhưng hắn lười nên tui chỉ cho hắn chuyển mãng 2 thành 1 như hắn hỏi thui . Cậu đọc lại kĩ sẽ hiểu ý hắn là gì !
    edit : tui cũng thử visual C++ 2008, không hề có 1 warning, chẳng biết cậu xài cái compiler VC++ nào mà báo chỗ đó syntax error ?
    Đã được chỉnh sửa lần cuối bởi rox_rook : 30-03-2008 lúc 05:29 AM.

  5. #5
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    HI !
    Nếu mà đề bài là zic zac thì đã có giải rồi.
    Còn nếu là chuyển sang ma trận 2 chiều tăng dần thì kid nghĩ thế này.
    Đầu tiên sort cái 1 chiều.
    Sau đó chuyển sang 2 chiều với điều kiện có thể chuyển được.
    PHP Code:
     GS A[n] -> B[p][q] :
     
    quick_sort(A,...);
     for(
    i:0->p)
       for(
    j:0-> q)
          
    B[i][j] = A[i*p+j]; 

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

    Mặc định Sắp Xếp Mảng 1 Chiều Vào Mảng 2 Chiều

    Đề bài cho yêu cầu là sắp xếp mảng 1 chiều gồm b[n*n] phần tử tăng dần rồi sao đó bỏ vào mảng 2 chiều a[n][n] theo điều kiện mà tôi đã ví dụ như trên với mảng 1 chiều là b[16] đã có sắp xếp sẵn và bỏ vào mảng 2 chiều a[4][4] ( xem số 0 là 1 để cho tiện ).

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

    Trích dẫn Nguyên bản được gửi bởi rox_rook Xem bài viết
    C Code:
    1. #include <cstdio>
    2.  
    3. const int Size = 3;
    4. int main(){
    5.     int arr1D[Size*Size] = {1,2,3,4,5,6,7,8,9};
    6.     int arr2D[Size][Size] = {};
    7.    
    8.     int index = 0;
    9.     for(int x = 0; x < Size; ++x){
    10.         for(int y = 0; y < Size; ++y){
    11.             arr2D[x][y] = arr1D[index++];
    12.         }
    13.     }
    14.  
    15.     for(int x = 0; x < Size; ++x){
    16.         for(int y = 0; y < Size; ++y){
    17.             printf("%d", arr2D[x][y]);
    18.         }
    19.         printf("\n");
    20.     }
    21.  
    22.     return 0;
    23. }

    Tui không hề có 1 warning nào ! VC++ có những cái mà chỉ có Billgate ban cho thêm nhưng không hề tồn tại trong standard C++.
    Bỏ 1 con số 0 vào thì ý nghĩa là arr[0][0] = 0, compiler sẽ generate mặc định cho tất cả các phần tử còn lại = 0. chứ không phải con số 0 đó là khai báo cho tất cả.
    Còn bài của tên kia là hắn muốn in ra zich zac cái ma trận, nhưng hắn lười nên tui chỉ cho hắn chuyển mãng 2 thành 1 như hắn hỏi thui . Cậu đọc lại kĩ sẽ hiểu ý hắn là gì !
    edit : tui cũng thử visual C++ 2008, không hề có 1 warning, chẳng biết cậu xài cái compiler VC++ nào mà báo chỗ đó syntax error ?
    Sao bài của bạn không ra giống bài của tôi vậy.
    Bạn chuyển mảng 1 chiều [ 1 2 3 4 5 6 7 8 9 ] thành mảng 2 chiều
    1 2 3
    4 5 6
    7 8 9
    Còn theo đề của minh sẽ thành
    1 3 6
    2 5 8
    4 7 9
    Cái này là zich zac theo đường chéo.
    Còn của bạn là theo đường nằm ngang.

  8. #8
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Mấy bài dạng này chỉ là thủ thuật mà thôi, nếu lười suy nghĩ thì vào box C++ mà tìm, check cái bài viết của tui cũng được. Tui có post 1 lần rùi. Còn câu hỏi của cậu là mãng 2 thành 1 chứ có nói zickzack gì đâu nào ?

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

    Mà chuyển qua ma trận gì?
    Sao trên kia toàn thấy mấy bạn cho vd đặc biệt không vậy,số phần tử là số chính phương nên khi chuyển qua ma trận sẽ cho ma trận vuông.

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

    Trích dẫn Nguyên bản được gửi bởi rox_rook Xem bài viết
    Mấy bài dạng này chỉ là thủ thuật mà thôi, nếu lười suy nghĩ thì vào box C++ mà tìm, check cái bài viết của tui cũng được. Tui có post 1 lần rùi. Còn câu hỏi của cậu là mãng 2 thành 1 chứ có nói zickzack gì đâu nào ?
    Thì mình cho ví dụ rồi đó , rõ ràng thế cơ mà :( . Bạn post lại code chỉ mình với .
    Bài này suy nghĩ hết 2 ngày rồi , nên quay sang làm mấy bài khác :(

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

  1. Trả lời: 2
    Bài viết cuối: 21-04-2013, 09:46 AM
  2. Lỗi: bố cục trang web tự tăng theo chiều ngang khi chiều cao thay đổi
    Gửi bởi tuanngocpt trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 2
    Bài viết cuối: 16-03-2013, 11:25 PM
  3. Trả lời: 1
    Bài viết cuối: 28-04-2012, 09:43 PM
  4. Cách truyền mang 1 chiều cho hàm bài con trỏ và mảng một chiều ai có thể giải thích giúp mình
    Gửi bởi biencute trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 8
    Bài viết cuối: 21-03-2012, 09:00 AM
  5. Lời giải bài tập: Chuỗi Ký tự, mảng số nguyên 1 chiều, mảng 2 chiều, tạo Menu
    Gửi bởi xuanngoc trong diễn đàn Thủ thuật, Tutorials và Mã nguồn C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 15-10-2011, 01:17 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