У меня два файла, и я должен ввести их оба в массивы. Один из них является:
2
3
4
5
7
8
Второй -
2
4
5
6
7
8
2
3
4
5
7
8
(это намного дольше, но это не имеет значения). Мне нужно иметь один массив с первыми 6 числами, а затем я должен проверить, совпадают ли первые шесть номеров со вторым файлом, такие как числа во втором массиве, то же самое со следующими шестью числами и т.д. (Например, проверка для победителя лотереи). Я предполагаю, что я должен загружать числа из одного файла в несколько массивов, но я понятия не имею, как это сделать, и я не могу найти его нигде.
Код для первого массива, который у меня есть до сих пор:
#include<iostream>
#include<fstream>
using namespace std;
int main(){
int numbers[6];
int count = 0;
ifstream inputFile;
inputFile.open("Numbers.txt");
while (count < 20 && inputFile >> numbers[6]){
count++;
inputFile.close();
for (count=0; count < 20; count++)
cout << numbers[count];}
return 0;
}
Другая проблема заключается в том, что вместо правильного отображения чисел он отображает "-858993460" 6 раз - хотя мой код в основном копируется из книги...
Что не так с моим кодом и как я могу ввести второй файл?
Ваша основная проблема заключается в том, чтобы делать вещи внутри вашей циклы, которых не должно быть. Предполагается, что цикл запускается один раз для каждого значения, которое он считывает из файла. После того, как это будет закончено, вы должны закрыть файл и распечатать результаты.
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int numbers[6];
int count = 0;
ifstream inputFile;
inputFile.open("Numbers.txt");
if(!inputFile.is_open()) // always check for errors
{
std::cerr << "ERROR opening input file:" << std::endl;
return 1; // error
}
// make sure count < 6 so you don't overflow your array
while(count < 6 && inputFile >> numbers[count])
{
count++;
// inputFile.close(); // don't close the file yet!!
//for(count = 0; count < 20; count++) // don't output yet!!
// cout << numbers[count];
}
// now close your file and output what you have
inputFile.close();
for(count = 0; count < 6 /* not 20!! */; count++) // don't output yet!!
cout << numbers[count] << '\n';
return 0;
}
Это пример чтения чисел из вашего первого файла. Этот пример может быть добавлен, чтобы читать числа из вашего второго файла и сравнивать их с числами, считанными из первого файла.
Обновлено:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
int numbers[6];
int count = 0;
ifstream inputFile;
inputFile.open("Numbers.txt");
// get each number from the file until the end-of-file bit
// is retrieved.
while ((inputFile >> numbers[count]) && (count < 6)){
// iterate count by one
count++;
}
inputFile.close();
// run through the array of numbers and ouput each index
for(int i = 0; i < 6; i++) {
cout << "numbers[" << i << "] = " << numbers[i] << "\n";
}
}
2
3
4
5
7
8
numbers[0] = 2
numbers[1] = 3
numbers[2] = 4
numbers[3] = 5
numbers[4] = 7
numbers[5] = 8
d
3
4
5
7
8
numbers[0] = 0
numbers[1] = 0
numbers[2] = -1527900896
numbers[3] = 32627
numbers[4] = -1527901752
numbers[5] = 32627
eof()
: stackoverflow.com/questions/5605125/… Также getline()
не работает так.