Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: Danh sách bài tập C++ cơ bản về con trỏ, stack and queue

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

    Question Danh sách bài tập C++ cơ bản về con trỏ, stack and queue

    Mình sắp thi nhưng máy bị lỗi nên mất 1 số dữ liệu , mình kiếm được 1 số đề để ôn tập và không rõ về bài tập sau , bạn nào biết ,chỉ giúp mình bài giải hoàn chỉnh để tham khảo ,thanks!

    Bài 1. Sử dụng con trỏ để cấp phát ma trận động. Viết các hàm sau:
    - Nhập một ma trận
    - Xuất ma trận ra màn hình
    - Cộng ma trận
    - Nhân ma trận
    ( tạo 2 ma trận , cộng 2 ma trận cùng kíck thước )
    // mình biết cách tạo ,nhập xuất mảng 2 chiều nhưng k biết cách sử dụng con trò để cấp phát .
    ----
    quy mang 2 chieu thanh 1 chiều ? công thức
    a = (int*)malloc(n * n * sizeof(int));
    a[i][j] <=> *(a + i * <số cột> + j);

    Bài 2. Xây dựng một cấu trúc Stack để quản lý các phần tử
    struct Stack{
    int *arr;
    int top; // lưu lại vị trí của phần tử đưa vào cuối cùng. Khởi tạo là -1
    int size; // kich thước tối đa của Stack
    }

    Viết các hàm sau:
    - Khởi tạo stack với số phần tử n
    - Kiểm tra Stack có rỗng hay không
    - Kiểm tra Stack có đầy hay không
    - Lấy một phần tử ra khỏi Stack
    - Đưa một phần tử vào Stack
    - Lấy giá trị của phần tử đầu tiên trong Stack
    - Hàm main. Nhập 10 phần tử ngẩu nhiên vào Stack và xuất ra màn hình.

    Bài 3. Xây dựng cấu trúc Queue

    Bài 4. Xây dựng một lớp Time mô tả các thông tin vê giờ, phút, giây.Lớp Time có các thành phần sau:
    - Các thuộc tính mô tả giờ, phút, giây;
    - Các hàm thành phần dùng để xác lập giá trị cho từng thành phần giờ, phút, giây(Có kiểm tra điều kiện giờ (0->23), phút(0->59), giây(0->59);
    - Hàm thành phần setTime(int,int,int) để xác lập thời gian
    - Hàm hiển thị giờ theo định dạng 24 tiếng (vd : 23:54:40);
    - Hàm hiển thị giờ theo định dạng 12 tiếng( vd : 11:54:40 PM);
    - Hàm tăngGiây()để tăng thời gian mỗi lần lên một giây. Chú ý các trường hợp tăng sang phút tiếp theo, tăng sang giờ tiếp theo,tăng sang ngày tiếp theo.
    Viết chương trình chính khai báo một đối tượng thời gian là 23:59:58 và thực hiện tăng thời gian 5 giây đồng thời hiển thị thời gian cho mỗi lần tăng.

    Bài 5. Xây dựng một lớp FloatSet để quản lý tập hợp các phần tử thực. Có các thuộc tính thiết lập private như sau:
    float *elems; // lưu trữ các phần tử
    int n; // số phần tử hiện hành
    int size; // số phần tử tối đa.
    Lớp FloatSet thực hiện các chức năng sau:
    - Hàm khởi tạo truyền vào một số nguyên, cấp phát bộ nhớ cho tập hợp các phần tử
    - Kiểm tra một số thực x có phải là thành viên trong tập hợp không?
    - Thêm một phần tử vào trong tập hợp
    - Loại bỏ một phần tử trong tập hợp
    - Sao chép từ một tập hợp khác
    - Kiểm tra xem có giống với một tập hợp khác không
    - Phép giao giữa 2 tập hợp
    - Phép kết giữa 2 tập hợp
    - Xuất tập hợp ra màn hình

    Bài 6. Xây dựng một lớp IntSet để quản lý tập hợp các phần tử nguyên . Sửa lớp IntSet để có thêm chức năng chuyển một tập hợp số nguyên sang tập hợp số thực. void IntSet::SetToFloat(FloatSet &set)
    (khai báo hàm này friend trong lớp FloatSet)

    Bài 7. Cài đặt lớp sinh viên có các thuộc tính và phương thức như sau
    - thuộc tính: MSSV(String), TENSV(String), DIEM1(double),DIEM2(double), DIEM3(double), TB(double)
    - Phương thức:Khởi tạo, tính điểm TB, xếp loại, xuât thông tin sinh viên

    Bài 8. Cài đặt lớp quản lý sinh viên để quản lý một danh sách các sv với các thuộc tính và hành vi như sau
    - thuộc tính: mảng các sinh viên, số sinh viên.
    - Hành vi: Tìm sinh viên có điểm TB thấp nhất, lớn nhất, sắp xếp sinh viên theo điểm TB tăng dần, giảm dần, Xuất danh sách sinh viên……

    Bài 9. Viết một class Point gồm các thuộc tính x,y và tên điểm. Viết phương thức khởi tạo truyền vào 3 đối số, mặc định 2 đối số đầu là 0, đối số 3 là mảng ký tự rỗng. Gán giá trị các đối số cho các thuộc tính. Lớp thực hiện các chức năng sau:
    - Tính khoảng cách giữa điểm hiện tại với điểm truyền vào phương thức này.
    - Tính khoảng cách giữa hai điểm. Đối số truyền vào phương thức này là 2 tọa độ điểm.
    - Phương thức hiển thị nội dung điểm. Ví dụ A(2,4)

    Bài 10. Viết một lớp hình tứ giác với 4 điểm (Point). Hàm khởi tạo truyền vào giá trị của 4 điểm. Thực hiện chức năng tính chu vi của hình tứ giác và xuất thông tin này ra màn hình cùng với toạ độ.

    Bài 11. Cải tiến lớp FloatSet . Viết các toán tử:
    - friend Boolean operator & (const float x, FloatSet& set);// kiểm tra xem một phần tử x có phải là thanh vien không?
    - friend Boolean operator = = (FloatSet& set1, FloatSet& set2); // kiểm tra xem 2 tập hợp có bằng nhau hay không
    - friend Boolean operator != (FloatSet& set1, FloatSet& set2); // kiểm tra xem 2 tập hợp có khác nhau hay không
    - friend FloatSet operator * (FloatSet& set1, FloatSet& set2); // giao 2 tập hợp cho ra tập mới.
    - friend FloatSet operator + (FloatSet& set1, FloatSet& set2); // hợp 2 tập hợp cho ra tập mới.

    Bài 12. Cài đặt lớp Phân Số với 2 thuộc tính là tử số và mẫu số thiết lập private. Contructor truyền vào 2 tham số và destructor. Định nghĩa các toán tử +(cộng), -(trừ), *(nhân), /(chia) , tiền tố ++(tăng phân số lên 1), hậu tố ++, tiền tố -- (giảm phân số đi 1), hậu tố --
    class PhanSo {
    private:
    int tuso, mauso;
    public :
    PhanSo(int t=0, int m=1) : tuso(t), mauso(m){}
    friend PhanSo &operator + (PhanSo&) ;
    friend PhanSo &operator - (PhanSo&) ;
    friend PhanSo &operator * (PhanSo&) ;
    friend PhanSo &operator / (PhanSo&) ;
    friend PhanSo &operator ++ (int , PhanSo&) ;
    friend PhanSo &operator ++ (PhanSo&, int) ;
    friend PhanSo &operator -- (int , PhanSo&) ;
    friend PhanSo &operator -- (PhanSo&, int) ;
    int layGiatri();
    void gianUoc();
    void Print();
    }

    Bài 13. Cài đặt lớp Binary

    Bài 14. Cài đặt lớp số phức

    Bài 15. Cài đặt một lớp dùng để quản lý các phần tử với các kiểu dữ liệu khác nhau :
    - Nhập
    - Xuất
    - Sắp xếp
    (dùng template và con trỏ hàm)

    -------------
    Hãy viết một lớp số nhị phân (Binary) có các thuộc tính là một mảng 1 chiều và kích thước mảng. Lớp có các phương thức như sau.
    - Hàm khởi tạo: truyền một số nguyên là kích thước của binary, mặc định là 32.
    - Hàm cộng 2 số Binary. (lưu ý: chỉ cộng 2 số cùng kích thước)
    - Hàm xuất số Binary

    -------------
    Số phức (Complex) có dạng như sau: a+ib trong đó a là phần thực, b là phần ảo, i2 = -1.
    Giả sử có số 2 số phức như sau:
    complex1 = 3+4i và complex2 = 1+2i
    Thực hiện 2 phép tính:
    - Cộng 2 số phức : complex = complex1 + complex2 = (3+1)+(4+2)i = 4+6i
    - Trừ 2 số phức : complex = complex1 – complex2 = (3-1)+(4-2)i = 2+2i

    Hãy viết 1 lớp Complex để thể hiện đối tượng số phức, thực hiện được 2 phép toán cộng trừ số phức. Ngoài ra lớp Complex còn có một số hành vi sau:
    - Hành vi khởi tạo số phức truyền 2 tham số. Mặc định là 0,0.
    - Hành vi xuất số phức ra màn hình. ví dụ 2+4i

    -----------
    Xây dựng lớp employee với các thành phần thuộc sau: age, yearofservice, salary
    Viết các hàm sau:
    - thiết lập các giá trị cho các thuộc tính age, yearofservice, salary, setEmployee (int,int,long)
    - thiết lập các thuộc tính cho lớp từ 1 đối tượng Employee khác: setEmployee(Employee)
    - Hàm xuất thông tin các thuộc tính của lớp
    Chương trình tạo ra 2 đối tượng thuộc lớp Employee
    Hãy thiết lập giá trị cho các thuộc tính của nó theo 2 cách (dung 2 hàm setEmployee(int,int,long) và setEmployee(Employee).
    Và xuất thông tin các thuộc tính của các đối tượng sau khi thiết lập giá trị,

    -------------
    Một phòng tại khách sạn khách sạn 5 sao gồm có các thông tin chính sau:
    - Loại phòng
    - Giá phòng
    - số ngày thuê
    Khách sạn này có 3 loại phòng A, B, C khác nhau.
    - Phòng loại A, đơn giá 80 USD / ngày.
    - Phòng loại B, đơn giá 60 USD / ngày.
    - Phòng loại C, đơn giá 40 USD / ngày.
    Phòng loại C phục vụ cho những khách hàng bình dân, vì vậy đối với những khách hàng này khi muốn sử dụng dịch vụ của khách sạn thì sẽ trả tiền tại chỗ và không tính chung vào tiền thuê phòng. Công thức tính tiền thuê phòng cho khách loại C: giá phòng * số ngày thuê.
    Những khách hàng thuê phòng loại B được phục vụ ăn sáng tại phòng, và phí phục vụ được tính vào tiền thuê phòng. Do đó tiền thuê phòng loại B của khách hàng tính theo công thức: đơn giá phòng * số ngày thuê + phí phục vụ ăn sáng.
    Đối với khách thuê phòng loại A thì ngoài việc phục vụ ăn sáng tại phòng còn có những dịch vụ cộng thêm khác. Vì vậy tiền thuê phòng loại A của khách hàng tính theo công thức: đơn giá phòng * số ngày thuê + phí phục vụ ăn sáng + phí dịch vụ khác.
    Đặc biệt khách sạn có chính sách giảm giá 10% cho những khách hàng thuê phòng loại A và B từ 5 ngày trở lên.
    Xây dựng các lớp và các chức năng cần thiết để chương trình cho phép nhân viên khách sạn nhập vào thông tin phòng mà khách hàng đã thuê. Chương trình sẽ tính xem số tiền mà khách hàng phải trả là bao nhiêu.
    ----

    Nhờ mấy bạn chỉ giúp bài giải hoàn chỉnh , thanks!
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

  2. #2
    Ngày gia nhập
    03 2010
    Nơi ở
    My Home
    Bài viết
    772

    Trích dẫn Nguyên bản được gửi bởi K9K Xem bài viết
    Mình sắp thi nhưng máy bị lỗi nên mất 1 số dữ liệu , mình kiếm được 1 số đề để ôn tập và không rõ về bài tập sau , bạn nào biết ,chỉ giúp mình bài giải hoàn chỉnh để tham khảo ,thanks!

    Bài 1. Sử dụng con trỏ để cấp phát ma trận động. Viết các hàm sau:
    - Nhập một ma trận
    - Xuất ma trận ra màn hình
    - Cộng ma trận
    - Nhân ma trận
    ( tạo 2 ma trận , cộng 2 ma trận cùng kíck thước )
    // mình biết cách tạo ,nhập xuất mảng 2 chiều nhưng k biết cách sử dụng con trò để cấp phát .
    Bạn có thể dựa vào đây và chỉnh sửa theo mục đích của bạn. Tôi viết demo với phép cộng, trừ (chắc không cần demo) và nhân ma trận (C)mxn =(A)mxp * (B)pxn

    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3.  
    4. void matrix_load(int* a, int row, int col)
    5. {
    6.     int number_element = row * col;    
    7.     for(int i = 0; i < number_element; i++)
    8.     {                
    9.         printf("a[%d, %d] = ", i / row, col == 1 ? i : i % col);
    10.         scanf("%d", a + i);
    11.     }
    12. }
    13.  
    14. void matrix_show(int* a, int row, int col)
    15. {
    16.     int number_element = row * col;
    17.     printf("\n");
    18.     for(int i = 0; i < number_element; i++)
    19.     {
    20.         printf("%5d", a[i]);
    21.         if(i && i % col == (col - 1))
    22.             if(col != 1)
    23.                 printf("\n");
    24.     }
    25.     printf("\n");
    26. }
    27.  
    28. void matrix_addition(const int* a, const int* b, int* dest_matrix, int row, int col)
    29. {
    30.     int number_element = row * col;
    31.     for(int i = 0; i < number_element; i++)
    32.     {
    33.         dest_matrix[i] = a[i] + b[i];
    34.     }
    35. }
    36. void matrix_subtraction(const int* a, const int* b, int* dest_matrix, int row, int col)
    37. {
    38.     int number_element = row * col;
    39.     for(int i = 0; i < number_element; i++)
    40.     {
    41.         dest_matrix[i] = a[i] - b[i];
    42.     }
    43. }
    44.  
    45. bool matrix_multiplication(const int* a, const int* b, int* dest_matrix, int a_row, int a_col, int b_row, int b_col)
    46. {
    47.     if(a_col != b_row)
    48.         return false;
    49.     int temp = a_col;
    50.     for(int i = 0; i < a_row; i++)
    51.     {    
    52.         int result = 0;
    53.         for(int j = 0; j < temp; j++)
    54.         {
    55.            
    56.             for(int k = 0; k < b_col; k++)
    57.                    result += a[i * a_row + k] * b[k * temp + j];
    58.            
    59.         }
    60.          dest_matrix[i * a_row + j] = result;
    61.     }
    62.     return true;
    63. }
    64. int main()
    65. {
    66.     int a_row, a_col, b_row, b_col;
    67.     printf("number rows of matrix A =");
    68.     scanf("%d", &a_row);
    69.     printf("number column of matrix A=");
    70.     scanf("%d", &a_col);
    71.    
    72.     int* a = new int[a_row * a_col];
    73.     printf("Enter value for each element of matrix A:\n");
    74.    
    75.     matrix_load(a, a_row, a_col);
    76.     matrix_show(a, a_row, a_col);    
    77.    
    78.     printf("number rows of matrix B =");
    79.     scanf("%d", &b_row);
    80.     printf("number column of matrix B=");
    81.     scanf("%d", &b_col);
    82.    
    83.    
    84.     int* b = new int[b_row * b_col];
    85.     printf("Enter value for each element of matrix B:\n");
    86.     matrix_load(b, b_row, b_col);
    87.     matrix_show(b, b_row, b_col);
    88.    
    89.     printf("A * B =\n");
    90.    
    91.     int* dest_matrix = new int[a_row * b_col];
    92.     matrix_multiplication(a, b, dest_matrix, a_row, a_col, b_row, b_col);
    93.     matrix_show(dest_matrix, a_row, b_col);
    94.    
    95.     delete[] a;
    96.     delete[] b;
    97.     delete[] dest_matrix;
    98.     getch();
    99.     return 0;
    100. }

    À, cái này demo thôi nhé, còn vài trường hợp như là ma trận 1 hàng, 1 cột thì bạn có thể sửa lại theo logic!
    Thông cảm mình đang bận quá!!

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

    bài này mình giải k sứ dụng con trỏ , dùng mảng 2 chiều ( k biết cách pót có màu sắc )

    C++ Code:
    1. #include<stdio.h>
    2. #include<iostream.h>
    3. #include<conio.h>
    4.  
    5. void nhap(int a[30][40],int a_row,int a_col)
    6. {
    7.     for(int x=0; x<a_row ; x++)
    8.    {
    9.     for (int y=0; y<a_col ; y++)
    10.       {
    11.         cout << "Nhap gia tri : " ;
    12.          cin >> a[x][y] ;
    13.       }
    14.    }
    15. };
    16.  
    17. void xuat(int a[30][40], int a_row , int a_col )
    18. {
    19.     for(int x=0; x< a_row ; x++)
    20.    {
    21.     for(int y=0; y < a_col ; y++)
    22.       {
    23.       cout << a[x][y] << ", ";
    24.       }
    25.    }
    26. };
    27.  
    28. int tong(int a[30][40],int s, int a_row , int a_col )
    29. {
    30.     s=0;
    31.     for(int x=0; x< a_row ; x++)
    32.    {
    33.     for(int y=0; y < a_col ; y++)
    34.       {
    35.       s=s+a[x][y] ;
    36.       }
    37.    }
    38.    cout << s ;
    39.    return 0 ;
    40. };
    41.  
    42. int tich(int a[30][40],int s, int a_row , int a_col )
    43. {
    44.     s=1;
    45.     for(int x=0; x< a_row ; x++)
    46.    {
    47.     for(int y=0; y < a_col ; y++)
    48.       {
    49.       s=s*a[x][y] ;
    50.       }
    51.    }
    52.    cout << s ;
    53.    return 0 ;
    54. };
    55.  
    56.  
    57. void nhap2(int b[30][40],int b_row,int b_col)
    58. {
    59.     for(int x=0; x<b_row ; x++)
    60.    {
    61.     for (int y=0; y<b_col ; y++)
    62.       {
    63.         cout << "Nhap gia tri : " ;
    64.          cin >> b[x][y] ;
    65.       }
    66.    }
    67. };
    68.  
    69. void xuat2(int b[30][40], int b_row , int b_col )
    70. {
    71.     for(int x=0; x< b_row ; x++)
    72.    {
    73.     for(int y=0; y < b_col ; y++)
    74.       {
    75.       cout << b[x][y] << ", ";
    76.       }
    77.    }
    78. };
    79.  
    80. void tong2mang(int a[30][40],int b[30][40],int s2[30][40],int a_row,int a_col,int b_row,int b_col)
    81. {
    82.     if ( a_row == b_row && a_col == b_col )
    83.    {
    84.    cout << "\n Tong 2 mang la : ";
    85.       for(int x=0; x< a_row ; x++)
    86.     {
    87.         for(int y=0; y < a_col ; y++)
    88.         {
    89.         s2[x][y]=a[x][y]+b[x][y];
    90.          cout << s2[x][y]<< " ";
    91.         }
    92.     }
    93.    }
    94.    else
    95.    {
    96.    cout << "\n Kick thuoc 2 mang khac nhau  k tinh tong duoc. ";
    97.    }
    98. }
    99.  
    100. void tich2mang(int a[30][40],int b[30][40],int s2[30][40],int a_row,int a_col,int b_row,int b_col)
    101. {
    102.     if ( a_row == b_row && a_col == b_col )
    103.    {
    104.    cout << "\n Tich 2 mang la : ";
    105.       for(int x=0; x< a_row ; x++)
    106.     {
    107.         for(int y=0; y < a_col ; y++)
    108.         {
    109.         s2[x][y]=a[x][y]*b[x][y];
    110.          cout << s2[x][y] << " ";
    111.         }
    112.     }
    113.    }
    114.    else
    115.    {
    116.    cout << "\n Kick thuoc 2 mang khac nhau  k tinh tick duoc. ";
    117.    }
    118. }
    119.  
    120. void main ()
    121. {
    122. clrscr();
    123. int a[30][40];
    124. int a_row , a_col ;
    125. cout << "Nhap so hang : " ;
    126. cin >> a_row ;
    127. cout << "Nhap so cot : ";
    128. cin >> a_col ;
    129.  
    130. nhap(a,a_row,a_col);
    131. cout << "Xuat gia tri da nhap : ";
    132. xuat(a,a_row,a_col);
    133.  
    134. int s;
    135. cout << "\n Tong ma tran : ";
    136. tong(a,s,a_row,a_col);
    137. cout << "\nTich ma tran : ";
    138. tich(a,s,a_row,a_col);
    139.  
    140. int b[30][40];
    141. int b_row , b_col ;
    142. cout << "\n Nhap so hang : " ;
    143. cin >> b_row ;
    144. cout << "Nhap so cot : ";
    145. cin >> b_col ;
    146.  
    147. nhap2(b,b_row,b_col);
    148. cout << "Xuat gia tri da nhap : ";
    149. xuat2(b,b_row,b_col);
    150.  
    151. int s2[30][40];
    152. tong2mang(a,b,s2,a_row,a_col,b_row,b_col);
    153. tich2mang(a,b,s2,a_row,a_col,b_row,b_col);
    154.  
    155. getch();
    156. }


    Mình k rõ cách dùng con trỏ cho ma trận ,mảng 2 chiều
    cần hướng dẫn ,giúp dỡ về khởi tạo ,nhập xuất ma trận
    C++ Code:
    1. /*
    2. int **a= NULL;
    3. a= new int *[40];
    4.     for (int x=0;x<40;x++)
    5.    {
    6.    a[x]=a[30];  //??
    7.    }
    8. */

  4. #4
    Ngày gia nhập
    03 2010
    Nơi ở
    ___Nghe _ An___
    Bài viết
    220

    giai ma tran tich ah
    minh co cai ne
    hay hay

    C++ Code:
    1. /* doc cho ky nha*/
    2.  
    3. #include <iostream.h>
    4. #include <conio.h>
    5. #include<stdlib.h>
    6. //prototype
    7. void AddMatrix(int * A,int *B,int*C,int M,int N);
    8. int AllocMatrix(int **A,int M,int N);
    9. void FreeMatrix(int *A);
    10. void InputMatrix(int *A,int M,int N,char Symbol);
    11. void DisplayMatrix(int *A,int M,int N);
    12.  
    13. int main()
    14.     {    
    15.         system("color 3e");
    16.         int M,N;
    17.         int *A = NULL,*B = NULL,*C = NULL;
    18.  
    19.         cout<<"Nhap so dong cua ma tran:";
    20.         cin>>M;
    21.         cout<<"Nhap so cot cua ma tran:";
    22.         cin>>N;
    23.         //C?p phát vùng nh? cho ma tr?n A
    24.         if (!AllocMatrix(&A,M,N))
    25.         { //endl: Xu?t ra kí t? xu?ng dòng (‘\n’)
    26.             cout<<"Khong con du bo nho!"<<endl;  
    27.             return 1;
    28.         }
    29.         //C?p phát vùng nh? cho ma tr?n B
    30.         if (!AllocMatrix(&B,M,N))
    31.         {
    32.             cout<<"Khong con du bo nho!"<<endl;
    33.             FreeMatrix(A);//Gi?i phóng vùng nh? A
    34.             return 1;
    35.         }
    36.         //C?p phát vùng nh? cho ma tr?n C
    37.         if (!AllocMatrix(&C,M,N))
    38.         {
    39.             cout<<"Khong con du bo nho!"<<endl;
    40.             FreeMatrix(A);//Gi?i phóng vùng nh? A
    41.             FreeMatrix(B);//Gi?i phóng vùng nh? B
    42.             return 1;
    43.         }
    44.         cout<<"Nhap ma tran thu 1"<<endl;
    45.         InputMatrix(A,M,N,'A');
    46.         cout<<"Nhap ma tran thu 2"<<endl;
    47.         InputMatrix(B,M,N,'B');
    48.  
    49.         cout<<"Ma tran thu 1"<<endl;
    50.         DisplayMatrix(A,M,N);
    51.         cout<<"Ma tran thu 2"<<endl;
    52.         DisplayMatrix(B,M,N);
    53.         AddMatrix(A,B,C,M,N);
    54.         cout<<"Tong hai ma tran"<<endl;
    55.         DisplayMatrix(C,M,N);
    56.         FreeMatrix(A);//Gi?i phóng vùng nh? A
    57.         FreeMatrix(B);//Gi?i phóng vùng nh? B
    58.         FreeMatrix(C);//Gi?i phóng vùng nh? C
    59.         return 0;
    60.     }
    61.  
    62.     //C?ng hai ma tr?n
    63.     void AddMatrix(int *A,int *B,int*C,int M,int N)
    64.     {
    65.         for(int I=0;I<M*N;++I)
    66.         C[I] = A[I] + B[I];
    67.     }
    68.     //C?p phát vùng nh? cho ma tr?n
    69.     int AllocMatrix(int **A,int M,int N)
    70.     {
    71.         *A = new int [M*N];
    72.         if (*A == NULL)
    73.             return 0;
    74.         return 1;
    75.     }
    76.     //Gi?i phóng vùng nh?
    77.     void FreeMatrix(int *A)
    78.     {
    79.         if (A!=NULL)
    80.             delete [] A;
    81.     }
    82.     //Nh?p các giá tr? c?a ma tr?n
    83.     void InputMatrix(int *A,int M,int N,char Symbol)
    84.     {
    85.         for(int I=0;I<M;++I)
    86.         for(int J=0;J<N;++J)
    87.         {
    88.             cout<<Symbol<<"["<<I<<"]["<<J<<"]=";
    89.             cin>>A[I*N+J];
    90.         }
    91.     }
    92.     //Hi?n th? ma tr?n
    93.     void DisplayMatrix(int *A,int M,int N)
    94.     {
    95.         for(int I=0;I<M;++I)
    96.         {
    97.             for(int J=0;J<N;++J)
    98.             {
    99.             cout.width(7);//canh le phai voi chieu dai 7 ky tu
    100.             cout<<A[I*N+J];
    101.             }
    102.         cout<<endl;
    103.         }
    104.     getche();
    105.     }

    yen tam di anh ban
    minh lam hai kieu viet ma tran
    c vs c++
    minh thay c++ chay hay hon nen post cho an do
    khong can chinh sua logic dau heehh

  5. #5
    Ngày gia nhập
    03 2010
    Bài viết
    4

    thanks cậu về phần bài giải Bài 1 ,
    để hiểu ... k chỉ trong thời gian ngắn là được
    Vì thời gian mình có hạn ,mà k biết hỏi ai ,nên mình cần bài giải mẫu để dễ so sánh hơn
    Bài 2,3 mình đang suy nghĩ làm mà vẫn chưa chạy được
    Có ai làm mẫu giúp mình + // chú thích

    C Code:
    1. #define n_stack 20
    2. // #define arr 50  ??
    3.  
    4. struct Stack
    5. {
    6.    int *arr;   // ??
    7.    int top;    // luu lai vi tri cua phan tu dua vao cuoi cung. Khoi tao la -1
    8.                 // nghi~ la gi ?
    9.    int size;   //-> n    ? so phan tu
    10. } s[n_stack];          //n_stack ??
    11.  
    12. -----------------------
    13.  
    14. # define MAX_ELE 100
    15. struct stack {
    16. int n; // so phan tu cua Stack  -> int size trong bai` ?
    17. DATA nodes[MAX_ELE]; // ngan xep la mang 1 chieu     ? so voi int * arr ?
    18. };
    19.  
    20. typedef struct stack STACK;
    21. // khoi tao Stack
    22. void init(STACK &stack) {
    23. stack.n=0;
    24. }
    25. // phep toan , kiem tra Stack co ro^~ng k
    26. int empty(STACK stack) {
    27. return (stack.n==0 ? TRUE : FALSE);
    28. }
    29. // Phep toan kiem tra Stack co full chua
    30. int full(STACK stack)
    31. {
    32. return (stack.n== MAX_ELE ? TRUE : FALSE);
    33. }
    34. // Phep them vao  -> dua 1 phan tu vao Stack
    35. void push(STACK &stack, DATA info) {
    36. if (full(stack))
    37. cout << "Ngan xep bi day.";
    38. else
    39. stack.nodes[++stack.n] = info;
    40. }
    41. // Phep loai bo   -> Lay 1 phan tu ra khoai Stack
    42. DATA pop (STACK &stack) {
    43. DATA x = DATANULL;
    44. if(empty(stack))
    45. cout << "Danh sach khong co phan tu.";
    46. else
    47. x = stack.nodes[stack.n--];
    48. return x;
    49. }

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

    Question Danh sách bài tập C++ cơ bản về con trỏ, stack and queue

    cho minh hoi ve code nhap xuat 2 so nhi phan
    tinh tong bang cach chuyen ra thap phan hay?
    code chuyen tu nhi phan sang thap phan

    Hãy viết một lớp số nhị phân (Binary) có các thuộc tính là một mảng 1 chiều và kích thước mảng. Lớp có các phương thức như sau.
    - Hàm khởi tạo: truyền một số nguyên là kích thước của binary, mặc định là 32.
    // 32 la so phan tu binary hay kick thuoc cua so nhi phan
    - Hàm cộng 2 số Binary. (lưu ý: chỉ cộng 2 số cùng kích thước)
    - Hàm xuất số Binary

    ---------------
    Số phức (Complex) có dạng như sau: a+ib trong đó a là phần thực, b là phần ảo, i2 = -1.
    Giả sử có số 2 số phức như sau:
    complex1 = 3+4i và complex2 = 1+2i
    Thực hiện 2 phép tính:
    - Cộng 2 số phức : complex = complex1 + complex2 = (3+1)+(4+2)i = 4+6i
    - Trừ 2 số phức : complex = complex1 – complex2 = (3-1)+(4-2)i = 2+2i

    Hãy viết 1 lớp Complex để thể hiện đối tượng số phức, thực hiện được 2 phép toán cộng trừ số phức. Ngoài ra lớp Complex còn có một số hành vi sau:
    - Hành vi khởi tạo số phức truyền 2 tham số. Mặc định là 0,0.
    - Hành vi xuất số phức ra màn hình. ví dụ 2+4i


    C Code:
    1. #include<stdio.h>
    2. #include<iostream.h>
    3. #include<stdlib.h>
    4. #include<conio.h>
    5. #include<string.h>
    6.  
    7. class Time
    8. {
    9.     int h,m,s;
    10.    public :
    11.    void setTime(int h,int m, int s) ;
    12.    void nhap(int h,int m,int s)
    13.    {
    14.     if ((h<0 || h>23) || (m <0 || m > 59) || (s<0 || s> 59))
    15.     {
    16.       cout << " Nhap gio , phut ,giay khong chinh xac ";
    17.     //nhap(h,m,s) ;
    18.     }
    19.    }
    20.    void Print()
    21.    {
    22.     cout << " Time : " << h << ":" << m << ":"<< s;
    23.    }
    24.  
    25.    void Print2()
    26.    {
    27.     char*t= "AM";
    28.     if (h > 12)
    29.     {
    30.       h = h-12 ;
    31.       t = "PM" ;
    32.     }
    33.       cout << " Time : " << h << ":" << m << ":"<< s << " " << t;
    34.    }
    35. };
    36.  
    37. void Time::setTime(int h, int m,int s)
    38. {
    39.     Time::h = h ;
    40.    Time::m = m ;
    41.    Time::s = s ;
    42. }
    43.  
    44. void main ()
    45. {
    46. int h,m,s ;
    47. cout << " Nhap gio , phut ,giay : ";
    48. cin >> h >> m >> s ;
    49. Time t1;
    50. t1.setTime(h,m,s);
    51. t1.nhap(h,m,s);
    52. t1.Print();
    53. t1.Print2();
    54.  
    55. getch();
    56. }
    57.  
    58. /*
    59. Viet ham tang thoi gian ??
    60.  
    61. template <class T>
    62. void bubbleSort(T a[],long n)
    63. {
    64.             long temp;
    65.             clock_t start,end;
    66.             double tg;
    67.             //bat dau bam thoi gian chay thuat toan
    68.             start=clock();
    69.             for(long i=0;i<n-1;i++)
    70.                 for(long j=n-1;j>i;j--)
    71.                     if(a[j]>a[j-1])
    72.                     {
    73.                         //doi cho a[j] va a[j-1]
    74.                         temp= a[j];
    75.                         a[j]=a[j-1];
    76.                         a[j-1]=temp;
    77.                     }
    78.             end=clock();
    79.             tg=(double)(end-start)/CLOCKS_PER_SEC;
    80.             FILE *f;
    81.             f=fopen("KetQuaNotBot.out","wt");
    82.             fprintf(f,"Thoi gian chay thuat toan Noi Bot: %2.15lf\n",tg);
    83.             for(long j=n-1;j>=0;j--)
    84.                 fprintf(f,"%ld\n",a[j]);
    85.             cout<<"\n Ket qua da duoc ghi vao file";
    86.             fclose(f);
    87.  
    88. }
    89.  
    90. */

  7. #7
    Ngày gia nhập
    09 2011
    Bài viết
    5

    Mặc định mình mới viết demo.ý tưởng thôi,tham khảo+chỉnh sửa chút.không có cái ăn sẵn đâu

    C Code:
    1. //nhan ma tran
    2. #include<iostream.h>
    3. #include<conio.h>
    4. #include<stdio.h>
    5. void nhapmatran(int **A,int m,int n)
    6. {
    7.      A= new int *[m];
    8.      for(int i=0;i<m;i++)
    9.       A[i] = new int[n];
    10.      for(int i=0;i<m;i++)
    11.       for(int j=0;j<n;j++)
    12.       {
    13.               cout<<"phan tu thu a["<<i<<","<<j<<"] =";
    14.               cin>>A[i][j];
    15.               }
    16.       cout<<endl;
    17.       return ;
    18. }
    19. void nhanmatran(int **A,int **B,int **C,int m,int n,int k)
    20. {
    21.      C = new int *[m];
    22.      for(int i=0;i<m;i++)
    23.       C[i]= new int[k];
    24.      for(i=0;i<m;i++)
    25.       for(j=0;j<k;j++)
    26.       {
    27.                       C[i][j]=0;
    28.                       for(int h=0;h<n;h++)
    29.                         C[i][j] = C[i][j] + A[i][k]*B[k][j];
    30.                         }
    31.       return ;
    32. }
    33. void inmatran(int **A,int m, int n)
    34. {
    35.      A= new int *[m];
    36.      for(int i=0;i<m,i++)
    37.       A[i] = new int[n];  
    38.      cout<<"ma tran la :"<<endl;
    39.      for(int i=0;i<m;i++)
    40.      {
    41.        for(int j=0;j<n;j++)
    42.        cout<<A[i][j]<<"   ";
    43.        cout<<endl;
    44.        }
    45.       cout<<endl;
    46.      return ;
    47. }
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

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

  1. Giáo trình Stack và Queue, có code minh họa
    Gửi bởi vitbau1412 trong diễn đàn Tài liệu, ebooks và công cụ
    Trả lời: 8
    Bài viết cuối: 21-08-2013, 04:00 PM
  2. Xây dựng chương trình mô phỏng: Danh sách liên kết, stack, queue?
    Gửi bởi cherry0103 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 28-06-2012, 11:49 PM
  3. Bài tập stack & queue ai giúp với
    Gửi bởi conglam92 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 17-03-2012, 10:37 PM
  4. Stack, queue có phải là danh sách liên kết ko?
    Gửi bởi baolonght trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 10
    Bài viết cuối: 19-12-2010, 03:51 PM
  5. STACK & QUEUE Dùng Mảng 1 Chiều !
    Gửi bởi kidkid trong diễn đàn Thủ thuật, Tutorials và Mã nguồn C/C++/C++0x
    Trả lời: 9
    Bài viết cuối: 28-05-2007, 10:51 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