Обработка файлов в 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 положительный перед запуском цикла.

Другие вопросы по тегам