30/09/2018, 18:22
lỗi khi tạo mảng 2 chiều
đề bài: viết chương trình nhập 1 mảng thực cấp không quá 20x20, và tìm giá trị lớn nhất trong mảng…
lúc đầu em dùng hàm srand() (vì nếu nhập từng con số 1 thì mỏi tay quá) nhưng nó xuất ra các hàng toàn là những con số giống nhau. và sau gần 1 giờ sợt trên google thì cũng kiếm ra hàm sleep() để dừng chương trình trong vài giây… đây là bài code của em:
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
void sleep( time_t delay ) {
time_t timer0, timer1;
time( &timer0 );
do {
time( &timer1 );
} while (( timer1 - timer0 ) < delay );
}
int main() {
int hang, cot;
do {
cout << "nhap so hang cua mang: ";
cin >> hang;
cout << "nhap so cot cua mang: ";
cin >> cot;
} while (hang > 20 || cot > 20);
int **mang2chieu = new int*[hang];
for (int i = 0; i < hang; ++i) {
mang2chieu[i] = new int[cot];
}
srand(time(0));
for (int i = 0; i < hang; i++) {
for (int j = 0; j < cot; j++) {
*mang2chieu[j] = rand() % 101;
}
sleep(2);
}
cout << "
cac phan tu cua mang 2 chieu truoc khi sap xep la:
";
for (int i = 0; i < hang; i++) {
for (int j = 0; j < cot; j++) {
cout<< *mang2chieu[j]<<" ";
}
cout << endl;
}
for (int i = 0; i < hang; ++i) {
delete[] mang2chieu[i];
}
delete[] mang2chieu;
system("pause");
return 0;
}
và đây là lỗi của nó…
em nghĩ hoài mà vẫn không ra nó bị lỗi gì…mấy anh (chị) có thể giúp em sửa lỗi này được không?
Bài liên quan
mang2chieu[i] là 1 chiều chứ không phải 2 chiều.
Tại sao trong vòng for khởi tạo và xóa mảng 2 chiều lại là ++i mà không phải i++.