#include<iostream>
#include<fstream>
using namespace std;
int main(){
ifstream infile;
int X,Y;
char ch;
infile.open("input.txt");
int** intarray = new int*[X];
for(int i = 0; i < X; ++i)
intarray[i] = new int[Y];
for(int k=0; k<16; ++k){
for(int j=0; j<24; ++j){
infile >> intarray[k][j];
cout << intarray[k][j]<<" ";
}
cout<< endl;
}
infile.get(ch);
infile.close();
}
Вот что я написал до сих пор, массив объявляется динамически, но когда я запускаю, появляется ошибка, указывающая на ошибку сегментации (сбрасывание ядра). для входного файла первая строка - 4 числа: #rows #columns min-value max-value, мне нужно распечатать их и поместить целые числа в 2-й массив, начиная вторую строку. Как я могу это сделать?
Обычно вы начинаете с заранее заданного массива определенного размера, а затем увеличиваете емкость по мере добавления большего количества элементов. Это означает, что когда элемент ожидает ввода в массив, но массив заполняется до его заданной емкости, вы выделяете новый больший блок памяти, копируете элементы из исходного массива в новый массив, а также новый элемент, delete[]
исходный массив и назначить его новому массиву.
Однако для этого требуется управление памятью, что в целом не является хорошей практикой в C++. Причина в том, что есть улучшения, такие как std::vector
который является оберткой вокруг динамического массива, по существу описанного выше. Но поскольку вы новичок, я бы сказал, сначала разработайте знания о работе с материалами низкого уровня, а затем проработайте свой путь вверх.
X
иY
неинициализируются, когда вы используете их в качестве размера для массива (и в качестве конечного условияfor
цикловfor
) ... Неопределенное поведение.