Вопрос задан 26.10.2023 в 20:11. Предмет Информатика. Спрашивает Ерёмшина Алиса.

Помогите найти ошибку в коде программы с++ #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"); }
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Марцулевич Валерия.

Это множество директив #include вам совершенно ни к чему. Хватит:

#include "time.h"

#include "iostream"


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

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

В вашем коде программы на C++ есть несколько ошибок и неточностей:

  1. В строке #include, после #include, должны быть указаны имена включаемых заголовочных файлов, например, #include <iostream> и #include <cstdlib> для использования rand() и srand().

  2. В классе matrix у вас инициализируется двумерный массив указателей, но вы не задаете размеры rows и cols до того, как используете их для создания массива. Перенесите эту инициализацию в конструктор класса, инициализируйте rows и cols перед созданием массива.

  3. Вместо 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 с указанным пользователем числом строк и столбцов, заполняет его случайными числами и выводит на экран. Помимо этого, он устраняет другие ошибки и улучшает структуру вашей программы.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос