Я начинаю изучать С++, и мне трудно заставить мой код читать несколько целых чисел из текстового файла.
Моя задача состоит в том, чтобы взять уже существующий код (код, который я разместил ниже) и изменить его, чтобы вместо ввода данных пользователем он читал из текстового файла.
Основная проблема, с которой я сталкиваюсь, заключается в функции void getNumber. Первоначально это был простой оператор cin, который считывал 20 введенных пользователем чисел, переносил их в основную функцию, обрабатывал их в другой функции, а затем печатал результаты в последней.
Я изменил код для успешного чтения текстового файла, однако он считывает только первое значение текстового файла (например, текстовый файл читает: 1 2 3 4... 20), а вывод читает: 1 1 1 1 1. ..
Я часами искал решения, к сожалению, многие ответы требуют вещей, с которыми я не знаком. Кажется, мне нужно будет установить какой-то цикл? Я не уверен.
Спасибо!
#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;
const int N = 20;
//Function prototypes
void initialize(int& zeroCount, int& oddCount, int& evenCount);
void getNumber(int& num);
void classifyNumber(int num, int& zeroCount, int& oddCount,
int& evenCount);
void printResults(int zeroCount, int oddCount, int evenCount);
int main ()
{
//Variable declaration
int counter; //loop control variable
int number; //variable to store the new number
int zeros; //variable to store the number of zeros
int odds; //variable to store the number of odd integers
int evens; //variable to store the number of even integers
initialize(zeros, odds, evens); //Step 1
cout << "Please enter " << N << " integers."
<< endl; //Step 2
cout << "The numbers you entered are: "
<< endl;
for (counter = 1; counter <= N; counter++) //Step 3
{
getNumber(number); //Step 3a
cout << number << " "; //Step 3b
classifyNumber(number, zeros, odds, evens); //Step 3c
}// end for loop
cout << endl;
printResults(zeros, odds, evens); //Step 4
return 0;
}
void initialize(int& zeroCount, int& oddCount, int& evenCount)
{
zeroCount = 0;
oddCount = 0;
evenCount = 0;
}
void getNumber(int& num)
{
ifstream inData;
inData.open("inputfile.txt");
inData >> num;
}
void classifyNumber(int num, int& zeroCount, int& oddCount,
int& evenCount)
{
switch (num % 2)
{
case 0:
evenCount++;
if (num == 0)
zeroCount++;
break;
case 1:
case -1:
oddCount++;
} //end switch
} //end classifyNumber
void printResults(int zeroCount, int oddCount, int evenCount)
{
ofstream outData;
outData.open("outputfile.txt.");
outData << "There are " << evenCount << " evens, "
<< "which includes " << zeroCount << " zeros"
<< endl;
outData << "The number of odd numbers is: " << oddCount
<< endl;
outData.close();
} //end printResults