У меня есть код, написанный для получения данных из входного файла (это всего лишь столбец из них и нулей) и превратить это в число 32-разрядных чисел. Это отлично работает, когда я знаю, сколько чисел в моем исходном файле. Я пытаюсь изменить его так, чтобы он работал для другого входного файла, где я не знаю размер, и вот где у меня проблемы Мой входной файл рад. Я пробовал:Как найти размер входного файла
int x=0;
while(!rad.eof()) {
x++;
}
cout << x;
, который ничего не возвращает,
while(!rad.eof()) {
rad >> x;
cout << x << endl;
}
, которая возвращает много больших чисел, которые все же и
while(!rad.eof()) {
rad >> x;
cerr << x << endl;
}
который возвращает множество нулей
Код, который работает, когда я знаю размер входного файла:
/*const int m=32,n=40000; //n isnt 40000, change it so that its the size of radioactivedata
int a[n]; // variable to hold each number as it is read from file
int i=0,j=0; //define variables
for (i=0 ; i<n ; i++) a[i]=0;
for (i=0 ; i<n ; i++); rad >> a[i]; //read numbers from rad into array with (>>) operator
unsigned long Num=0;
while(j<n){
i = 0; //reinitialize i and Num
Num = 0;
while (i<m){
Num = Num + (a[j])*pow(2.,i);
i++;
j++;
}
cout << j/m << "\t" << Num << endl;
out << j/m << "\t" << Num << endl;
}*/
Любая помощь будет оценена, пожалуйста, используйте простой язык.
Поскольку вы используете C++, почему бы вам не использовать std :: vector вместо массива. таким образом вам не придется беспокоиться о том, сколько записей существует в вашем файле. – Devolus
Я понятия не имею, как использовать std :: vector, у меня есть основная идея использования массивов. – Hester