#c
#c
Вопрос:
Мне нужно, чтобы мой вывод выглядел так.
Applicant #: 1
School = L GPA = 4.0 math = 600 verbal = 650 alumnus = N
Applying to Liberal Arts
Accepted to Liberal Arts!!!
Но когда я запускаю код, он просто помещает входные данные в каждое отдельное место, не переходя к текстовому файлу.
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
// Open both input and output
ifstream input;
input.open("MP2input.txt.");
ofstream output;
output.open("MP2output.txt");
// containers for any variables
double app = 0;
string pass;
if(!input.fail())
{
do(input >> pass)
{
app ;
output << "Application #" << app << endl;
output << "School = " << pass << " GPA = " << pass << " Math = " << pass << " Verbal = " << pass << " Alumnus = " << pass << endl;
}
}
input.close();
output.close();
}
Входные данные должны выглядеть следующим образом
L 4.0 600 650 N
M 3.9 610 520 N
L 3.8 590 600 N
Вывод выглядит так
Application #1
School = L GPA = L Math = L Verbal = L Alumnus = L
Application #2
School = 4.0 GPA = 4.0 Math = 4.0 Verbal = 4.0 Alumnus = 4.0
Application #3
School = 600 GPA = 600 Math = 600 Verbal = 600 Alumnus = 600
Application #4
Ответ №1:
Здесь:
do(input >> pass)
{
app ;
output << "Application #" << app << endl;
output << "School = " << pass << " GPA = " << pass << " Math = " << pass << " Verbal = " << pass << " Alumnus = " << pass << endl;
}
Вы считываете одну строку из файла, а затем печатаете ее несколько раз. input >> pass
читает одно слово, пока не встретит символ пробела. Неясно, как вы ожидаете output << "School = " << pass << " GPA = " << pass ...
печатать разные записи из файла. Также у вас есть do
без while
.
Если вы хотите прочитать несколько слов из файла, который вам скорее нужен:
std::string school;
std::string GPA;
// ... others ...
while(input >> school >> GPA) {
app ;
output << "Application #" << app << endl;
output << "School = " << school << " GPA = " << GPA << endl;
// ... others ...
}
Комментарии:
1. Это сделало свое дело. Большое вам спасибо. Я новичок в кодировании и новичок в переполнении стека.
Ответ №2:
Если вы уверены, что ваш входной файл правильно отформатирован, просто обновляйте pass из ввода каждый раз.
int main()
{
// Open both input and output
ifstream input;
input.open("MP2input.txt.");
ofstream output;
output.open("MP2output.txt");
// containers for any variables
double app = 0;
string pass;
if(!input.fail())
{
do(input >> pass)
{
app ;
output << "Application #" << app << endl;
output << "School = " << pass;
input >> pass;
output << " GPA = " << pass;
input >> pass;
output << " Math = " << pass;
input >> pass;
output << " Verbal = " << pass;
input >> pass;
output << " Alumnus = " << pass << endl;
}
}
input.close();
output.close();
}
Лучше быть немного более надежным и проверять input.fail() каждый раз, но это много ввода;-)