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

Đề tài: [Solved] Hỏi về con trỏ

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

    Mặc định [Solved] Hỏi về con trỏ

    Các bạn cho mình hỏi làm thế nào để dùng con trỏ nhập mảng và in mảng như sau:
    a[0][0]=2
    a[0][1]=1
    .....
    a[m][n]=5 //các số trên là tùy
    in ra:
    2 1 ....6
    .......
    .........5
    tức là in dưới dạng ma trận

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

    Con trỏ với mảng 2 chiều thì bạn nên làm thế này.
    Trước hết bạn nên tạo 1 biến con trỏ
    vd:
    int *pa,a[2][3]; //Tạo biến con trỏ pa
    Đoạn code này con trỏ để đưa dữ liệu vào mảng 2 chiều.
    pa=(int *)a;
    for(int i=0 ;i<n; i++)
    scanf("%d",pa+i);

    Bạn nên đọc thêm sách để hiểu hơn về con trỏ.
    Chúc bạn học tốt

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

    Trích dẫn Nguyên bản được gửi bởi daithienvuong99 Xem bài viết
    Con trỏ với mảng 2 chiều thì bạn nên làm thế này.
    Trước hết bạn nên tạo 1 biến con trỏ
    vd:
    int *pa,a[2][3]; //Tạo biến con trỏ pa
    Đoạn code này con trỏ để đưa dữ liệu vào mảng 2 chiều.
    pa=(int *)a;
    for(int i=0 ;i<n; i++)
    scanf("%d",pa+i);

    Bạn nên đọc thêm sách để hiểu hơn về con trỏ.
    Chúc bạn học tốt
    Mình không hiểu ý bạn
    n ở đây là cái gì? số dòng hay số cột?hay là m*n?
    mình muốn cấp phát động cho mảng chứ không phải cho nó cố định là 2*3 như thế
    và như thế kia thì sao nhập và in ra được dưới dạng ma trận?

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

    C Code:
    1. for(i=0;i<Hang;++i)
    2. {
    3.  for(j=0;j<Cot;++j)
    4.   printf("%3d",a[i][j]);
    5.  printf("\n");
    6. }

    C Code:
    1. //in
    2. for(i=0;i<Hang;++i)
    3.  for(j=0;j<Cot;++j)
    4.   {
    5.     printf("\nNhap gia tri cho ptu thu %d",i*Hang+j);
    6.     scanf("%d",&p[i*Hang+j]);
    7.   }
    8. //out
    9. for(i=0;i<Hang;++i)
    10. {
    11.  for(j=0;j<Cot;++j)
    12.   printf("%3d",p[i*Hang+j])
    13.  printf("\n");
    14. }
    Đã được chỉnh sửa lần cuối bởi 6220119 : 17-09-2008 lúc 08:02 AM.
    code ra gió bão

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

    Coi ví dụ này
    C Code:
    1. #include <cstdio>
    2. #include <cstdlib>
    3.  
    4. const int ROW = 2;
    5. const int COL = 3;
    6.  
    7. int** getDynamicTwoDimensionalArray( int row, int col )
    8. {
    9.     int** ary2d = ( int** )malloc( row * sizeof( int* ) );
    10.     int   o;
    11.  
    12.     for( o = 0; o < row; ++o )
    13.     {
    14.         ary2d[ o ] = ( int* )malloc( col * sizeof( int ) );
    15.     }
    16.  
    17.     return ary2d;
    18. }
    19.  
    20. void printArray( int** ary2d, int row, int col )
    21. {
    22.     int i, j;
    23.     for( i = 0; i < row; ++i )
    24.     {
    25.         for( j = 0; j < col; ++j )
    26.         {
    27.             printf( "%d -", ary2d[ i ][ j ] );
    28.         }
    29.         printf( "\n" );
    30.     }
    31. }
    32.  
    33. void assignValue( int** ary2d, int row, int col )
    34. {
    35.     int i, j;
    36.     for( i = 0; i < row; ++i )
    37.     {
    38.         for( j = 0; j < col; ++j )
    39.         {
    40.             ary2d[ i ][ j ] = 9;
    41.         }
    42.     }
    43. }
    44.  
    45. void deallocateMemory( int** ary2d, int row )
    46. {
    47.     int o;
    48.     for( o = 0; o < row; ++o )
    49.     {
    50.         free( ary2d[ o ] );
    51.     }
    52.  
    53.     free( ary2d );
    54. }
    55.  
    56. int main()
    57. {
    58.     int** my_2d_array = getDynamicTwoDimensionalArray( 3, 4 );
    59.  
    60.     assignValue( my_2d_array, 3, 4 );
    61.  
    62.     printArray( my_2d_array, 3, 4 );
    63.  
    64.     deallocateMemory( my_2d_array, 3 );
    65.  
    66.     return 0;
    67. }

    Nhập vào thì thay trong hàm assignValue()
    C Code:
    1. void assignValue( int** ary2d, int row, int col )
    2. {
    3.     int i, j;
    4.     for( i = 0; i < row; ++i )
    5.     {
    6.         for( j = 0; j < col; ++j )
    7.         {
    8.             printf( "[ %d ] [ %d ] \n", i, j );
    9.             scanf( "%d", &( *( ( *( ary2d + i ) ) + j ) ) );
    10.         }
    11.     }
    12. }
    Đã được chỉnh sửa lần cuối bởi rox_rook : 17-09-2008 lúc 08:11 AM.

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

  1. [Solved]xem hộ mình với ( sao không lặp lại nhỉ)
    Gửi bởi minhphuong90 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 8
    Bài viết cuối: 09-11-2008, 06:05 PM
  2. [ Solved ]Xây dựng lớp ĐỒTHI
    Gửi bởi bluesky_123078 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: 09-11-2008, 09:34 AM
  3. [ Solved ]Cấp phát động
    Gửi bởi demontaihack trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 16
    Bài viết cuối: 07-09-2008, 08:23 PM
  4. [ Solved ]Cần hướng dẫn về bài tập màng!!
    Gửi bởi itthuyloi 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: 03-06-2008, 03:00 PM
  5. [ Solved ]Sắp xếp hai dãy số
    Gửi bởi thuchanh trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 10
    Bài viết cuối: 20-04-2008, 11:47 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