Обработка файлов в Eiffel
Учитывая файл input.txt
, который состоит из ряда элементов в массивах и элементов в массивах, я должен прочитать данные и скопировать их в массивы в Eiffel. Например, для
3
3 4 5
2 3 1
Я должен получить len = 3
, a1 = {3,4,5}
, a2 = {2,3,1}
.
Я пробовал следующее, но безуспешно
take_input
-- Read user's input.
local
input: PLAIN_TEXT_FILE
output: PLAIN_TEXT_FILE
itr: INTEGER
do
create input.make_open_read ("input.txt")
input.read_integer
len := input.last_integer
create output.make_open_write ("output.txt")
create num.make_filled (0, 1, len)
create rem.make_filled (0, 1, len)
from
input.start
input.read_integer
itr := 0
until
input.off
loop
itr := itr + 1
if itr <= len then
num [itr] := input.last_integer
input.read_integer
else
rem [itr - len] := input.last_integer
input.read_integer
end
end
input.close
end
Здесь есть ли способ, которым я могу постоянно читать входные данные, а не снова начинать с начала файла?
1 ответ
После считывания количества элементов нет необходимости переходить к началу файла. Следовательно, удалениеinput.start
сразу после from
сделает свое дело.
В качестве проверки работоспособности (если это важно для вашей программы) имеет смысл проверить, len
положительный перед запуском цикла.