ошибка: нет совпадения для 'operator <<' (типы операндов: 'std :: ifstream {aka std :: basic_ifstream <char>}' и 'int') - PullRequest
0 голосов
/ 05 апреля 2020

Я пытаюсь прочитать несколько строк чисел из текстового документа, и я не уверен, какой тип объявления использовать, не приводя к подгонке программы. Есть ли способ обойти эту ошибку?

#include <iostream>
#include <cmath>
#include <fstream>
using namespace std;

char studentlettergrade1, StudentGradingFunction1 (int, int, int);
int main()
{
int score1, score2, score3, studentIDnumber1, studentaverage1, num1, num2, num3;

ifstream input;
ofstream output;
// Open Score file
input.open("StudentInfo.txt");
output.open("StudentGrades.txt");

// Read in student scores
while (studentIDnumber1 > 0)
{
   input << studentIDnumber1 << score1 << score2 << score3;
   studentlettergrade1 = StudentGradingFunction1 (score1, score2, score3);
   output << studentIDnumber1 << studentlettergrade1;
}
input.close();
output.close();
}

char StudentGradingFunction1 (int num1, int num2, int num3)
{
   int studentaverage1;
   studentaverage1 = (num1 * .3 + num2 * .3 + num3 * .4) * 100;
   if (studentaverage1 >= 90 && studentaverage <= 100)
   studentlettergrade1 = A;
   else if (studentaverage1 >= 80 && studentaverage1 <= 89.99)
   studentlettergrade1 = B;
   else if (studentaverage1 >= 70 && studentaverage1 <= 79.99)
   studentlettergrade1 = C;
   else if (studentaverage1 >= 60 && studentaverage1 <= 69.99)
   studentlettergrade1 = D;
   else if (studentaverage1 < 60)
   studentlettergrade1 = F;

   return studentlettergrade1;
} 

РЕДАКТИРОВАТЬ: я изменил свой код, так что пока l oop работает лучше, но я пытаюсь добавить условие, когда программа читает новая строка, которую он зарегистрирует, но программа не принимает то, что я пробовал. Я попробовал следующие идеи:

while ( input >> studentIDnumber1 >> score1 >> score2 >> score3 >> char delim )
{
   studentlettergrade1 = StudentGradingFunction1 (score1, score2, score3);
   output << studentIDnumber1 << studentlettergrade1 << '\n';
}
input.close();
output.close();

cout << "The process has been completed and the grades can be found in StudentGrades.txt " << endl;
}

Или вот это:

while ( input >> studentIDnumber1 >> score1 >> score2 >> score3 >> '\n' )
{
   studentlettergrade1 = StudentGradingFunction1 (score1, score2, score3);
   output << studentIDnumber1 << studentlettergrade1 << '\n';
}
input.close();
output.close();

cout << "The process has been completed and the grades can be found in StudentGrades.txt " << endl;
}

Ни одна из них, похоже, не работает. Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...