
Помогите найти ошибку в коде программы с++ #include "stdafx.h" #include #include #include
#include #include "time.h" #include "iostream" using namespace std; class matrix { private: int rows; int cols; int **arr = new int*[rows]; public: void matrix1() { cin >> rows; cin >> cols; for (int i = 0; i < rows; i++) { arr[i] = new int[cols]; } for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { arr[i][j] = rand() % 10; } } for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { cout << arr[i][j] << "\t"; } cout << endl; } for (int i = 0; i < rows; i++) { delete[] arr[i]; } delete[] arr; } }; void main() { srand(time(NULL)); matrix pervaya; pervaya.matrix1(); system("pause"); }

Ответы на вопрос

Это множество директив #include вам совершенно ни к чему. Хватит:
#include "time.h"
#include "iostream"
Также, метод main() должен возвращать int. Сигнатура void main() - глупость. В стандарте указано, что корректные сигнатуры это int main() и int main(int argc, char* argv[]).



В вашем коде программы на C++ есть несколько ошибок и неточностей:
В строке
#include
, после#include
, должны быть указаны имена включаемых заголовочных файлов, например,#include <iostream>
и#include <cstdlib>
для использованияrand()
иsrand()
.В классе
matrix
у вас инициализируется двумерный массив указателей, но вы не задаете размерыrows
иcols
до того, как используете их для создания массива. Перенесите эту инициализацию в конструктор класса, инициализируйтеrows
иcols
перед созданием массива.Вместо
void main()
должно бытьint main()
, так как функцияmain
должна возвращать целочисленное значение.
Вот исправленный вариант вашего кода:
cpp#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
class matrix {
private:
int rows;
int cols;
int **arr;
public:
matrix(int r, int c) : rows(r), cols(c) {
arr = new int*[rows];
for (int i = 0; i < rows; i++) {
arr[i] = new int[cols];
}
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
arr[i][j] = rand() % 10;
}
}
}
void printMatrix() {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
cout << arr[i][j] << "\t";
}
cout << endl;
}
}
~matrix() {
for (int i = 0; i < rows; i++) {
delete[] arr[i];
}
delete[] arr;
}
};
int main() {
srand(time(NULL));
int rows, cols;
cout << "Enter number of rows: ";
cin >> rows;
cout << "Enter number of columns: ";
cin >> cols;
matrix pervaya(rows, cols);
pervaya.printMatrix();
system("pause");
return 0;
}
Этот исправленный код создает объект matrix
с указанным пользователем числом строк и столбцов, заполняет его случайными числами и выводит на экран. Помимо этого, он устраняет другие ошибки и улучшает структуру вашей программы.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili