Чтение текстового файла со смешанным вводом с использованием cin и/или строк

Я только начал решать проблему кодирования, которую должен решить, и не знаю, как начать и выполнить задачу. Есть несколько текстовых файлов, состоящих из слов. Если слово представляет собой число, то это балл учащегося за вопрос, поэтому вы добавляете его к экзаменационному баллу учащегося. Если слово не является числом, а является словом «ИМЯ», то следующим словом является имя учащегося. Если слово «СРЕДНЕЕ», то вы начинаете читать числа до тех пор, пока не прочитаете слово, которое не является числом (или является концом файла). Вы усредняете все эти числа и добавляете это к счету. Иногда после «СРЕДНЕГО» не следует число. В этом случае вы игнорируете «СРЕДНИЙ». Ввод всегда будет иметь только одно имя, и имя учащегося не будет «Среднее» или «Имя».

Вот некоторые примеры:

UNIX> cat test-1.txt
NAME Fred
UNIX> ./moonglow < test-1.txt
Fred 0
UNIX> cat test-2.txt
NAME Dontonio
8.6
16.2
UNIX> ./moonglow < test-2.txt
Dontonio 24.8
UNIX> cat test-3.txt
I miss Starrlight!!
15 NAME
Frank
UNIX> ./moonglow < test-3.txt
Frank 15
UNIX> cat test-4.txt
AVERAGE 10 15 20 NAME Luther 10 Starrlite!!
UNIX> ./moonglow < test-4.txt
Luther 25
UNIX> cat test-5.txt
NAME Baby-Daisy
AVERAGE 3 4 5 6
AVERAGE 7 8 9
Where's Starrlite!!
UNIX> ./moonglow < test-5.txt
Baby-Daisy 12.5
UNIX> cat test-6.txt
Starrlite AVERAGE Starrlite!!! NAME 
Starrlite
AVERAGE 55 Starrlite!!!  Starrlite
AVERAGE Starrlite 5 6 7
UNIX> ./moonglow < test-6.txt
Starrlite 73 

Иногда в файле появляются ненужные слова, и их нужно игнорировать.

По сути, я хочу знать, каким методом я бы подошел к чтению ввода? Гетлайн? Чисто цин? Я не уверен, как обрабатывать различные места, в которых может находиться каждая часть информации (имя, среднее значение, баллы) с cin, когда каждый может меняться от файла к файлу.


person jaredthecoder    schedule 18.01.2014    source источник
comment
в чем вопрос?   -  person Idov    schedule 18.01.2014
comment
Я отредактировал его, включив в него свой настоящий вопрос.   -  person jaredthecoder    schedule 18.01.2014


Ответы (1)


Вы получаете ввод из файла, поэтому вы не можете использовать cin и т. д.
вам придется использовать метод в «Текстовые файлы» по этой ссылке:
http://www.cplusplus.com/doc/tutorial/files/

как только вы прочитаете текст, вам придется разобрать его, проверить каждый элемент, является ли он числом или словом, и обработать его по мере необходимости.

person Idov    schedule 18.01.2014