Помощь - Поиск - Пользователи - Календарь
Полная версия: перечисляем строки в массив
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
doorway
есть задачка, большая, но я забыл как перечислить нормально строки текстового файла в массив. и большая стала маленькой пока.
входной файл имеет вид
1
2
3
..
10
Все работает, но в выходном файле 0.


program var2;

var

mass:array[1..10] of integer;

inp, out:text;

i:integer;

begin

assign(inp,'inpu.inp');

assign(out,'outpu.out');

reset(inp);

for i:=1 to 10 do

begin

readln(inp,mass[i]);

end;

rewrite(out);

write(out,mass[2]);

close(out);

close(inp);

end.


Помогите ошибку найти.
Unconnected
"Иди туда, не знаю куда"? В чём задание состоит?
doorway
Цитата(Unconnected @ 15.09.2010 20:58) *

"Иди туда, не знаю куда"? В чём задание состоит?


перечислить строки текстового файла в массив mass. (текстовый файл: 10 строк, 1 столбик. целые числа).
ну а потом я написал вывести второй элемент массива в файл для проверки.
Unconnected
Попробуй изменить имя переменной out (например, f2 напиши, мне кажется, out это зарезервированное слово). И проверь, существует ли входной текстовик в папке с программой. Так то должно работать, паскаля под рукой нет просто.. outpu.txt создаётся?
doorway
Цитата(Unconnected @ 15.09.2010 21:12) *

Попробуй изменить имя переменной out (например, f2 напиши, мне кажется, out это зарезервированное слово). И проверь, существует ли входной текстовик в папке с программой. Так то должно работать, паскаля под рукой нет просто.. outpu.txt создаётся?


Выходной файл создается с нулем. заменил на f2. Все по-прежнему. по шагам все работает как надо, результат - нулевой.
Rian
код с поправками в фпц создал выходной файл с 2
точно файл загружается? меня пугают расширения *.inp
doorway
Цитата(Rian @ 15.09.2010 23:15) *

код с поправками в фпц создал выходной файл с 2
точно файл загружается? меня пугают расширения *.inp


да, файл смотрю правильно, все уже пересмотрел и перепробовал. расширение нормальное. мы ж указываем тип текст. у нас препод ваще все подряд пишет в расширении когда текстовый файл и канает
Rian
а как ты данные в текстовый файл вносишь?
плз выложи те файлы
doorway
Цитата(Rian @ 15.09.2010 23:29) *

а как ты данные в текстовый файл вносишь?
плз выложи те файлы

Rian
а эти строки у програме так и остались?

assign(inp,'inpu.inp');

assign(out,'outpu.out');
doorway
Цитата(Rian @ 15.09.2010 23:34) *

а эти строки у програме так и остались?

assign(inp,'inpu.inp');

assign(out,'outpu.out');

не, если файлы с расширением txt, то и п роге я их меняю. с файлами все впорядке. иначе ошибка вылетает файл не найден
Rian
а массив на экран вывести?
doorway
Цитата(Rian @ 15.09.2010 23:52) *

а массив на экран вывести?

нули рисует
Unconnected
Это значит, что массив в цикле заполняется некорректно. Хмм, какой паскаль используешь? Попробуй в цикле заполнения массива заодно выводить числа на экран с помощью writeln.
doorway
Цитата(Unconnected @ 16.09.2010 0:41) *

Это значит, что массив в цикле заполняется некорректно. Хмм, какой паскаль используешь? Попробуй в цикле заполнения массива заодно выводить числа на экран с помощью writeln.

1)турбо паскаль 7.1
2) первая единица, а потом нули
Rian
Цитата(doorway @ 16.09.2010 0:02) *

1)турбо паскаль 7.1
2) первая единица, а потом нули

блин на трёх компах проверил.... работает...
volvo
Цитата
турбо паскаль 7.1
Выбрось. Установи нормальный TP 7.0, и наслаждайся правильной работой программ. Твой код, к примеру, под TP 7.0 отработал прекрасно, выдал "2" в выходном файле.
doorway
Цитата(volvo @ 16.09.2010 12:48) *

Выбрось. Установи нормальный TP 7.0, и наслаждайся правильной работой программ. Твой код, к примеру, под TP 7.0 отработал прекрасно, выдал "2" в выходном файле.

попробовал на 7.0 - та же фигня. первая едини ца выводится а потом нули
Rian
гм blink.gif .... фпц?

ЗЫ а у тебя не виста?
doorway
Цитата(Rian @ 16.09.2010 16:03) *

гм blink.gif .... фпц?

ЗЫ а у тебя не виста?

нет, хр, а есть тот ТР, на котором у вас пошло.
volvo
Цитата
попробовал на 7.0 - та же фигня. первая едини ца выводится а потом нули
В таком случае тебе уже ничего не поможет. Если на твоем компьютере программа не в состоянии корректно прочесть простейший текстовый файл - значит, либо он (компьютер, в смысле) заражен по самое не могу, либо у тебя битые компиляторы какие-то, либо ОСь. Во всех трех случаях нужны кардинальные меры.
Freedom
Цитата(doorway @ 16.09.2010 14:53) *

попробовал на 7.0 - та же фигня. первая едини ца выводится а потом нули


Попробуйте readln на read заменить
doorway
Цитата(volvo @ 16.09.2010 16:36) *

В таком случае тебе уже ничего не поможет. Если на твоем компьютере программа не в состоянии корректно прочесть простейший текстовый файл - значит, либо он (компьютер, в смысле) заражен по самое не могу, либо у тебя битые компиляторы какие-то, либо ОСь. Во всех трех случаях нужны кардинальные меры.

да уже попробовал на эмуляторе дос под мандривой(у меня как вторая система) - один хер
Lapp
Дело явно во входном файле, что-то с ним не так. Ясно, что в процессе чтения не происходит переход на следующую строку. То есть ReadLn не находит признака конца строки.

Тот файл, что ты прикрепил выше, имеет явно не Windows/DOS формат - в нем концы строк обозначены не двумя символами CR+LF ($0D+$0A), как это принято у MS, а одним LF ($0A), как в Unix. У меня тут нету TP, чтобы проверить его реакцию на такое безобразие.

В чем ты создаешь входной файл? Создай его в обычном Блокноте. Если у тебя продвинутый редактор, то посмотри, не стоит ли там где-нить опция записи в формате Unix. На всякий случай я прикрепляю нормальный (виндусовый) файл. Признаком "нормальной виндусовости", кстати, может служить длина файла. Она должна быть по крайней мере 29 байт. Присланный тобой файл содержит 21 байт.

Нажмите для просмотра прикрепленного файла

С названиями переменных и файлов тоже, конечно, желательно быть осторожнее. В этом примере все на самом деле чисто, но лучше избегать всяких in и out и т.п. Береженого Бог бережет.. smile.gif
doorway
Цитата(Lapp @ 17.09.2010 3:33) *

Дело явно во входном файле, что-то с ним не так. Ясно, что в процессе чтения не происходит переход на следующую строку. То есть ReadLn не находит признака конца строки.

Тот файл, что ты прикрепил выше, имеет явно не Windows/DOS формат - в нем концы строк обозначены не двумя символами CR+LF ($0D+$0A), как это принято у MS, а одним LF ($0A), как в Unix. У меня тут нету TP, чтобы проверить его реакцию на такое безобразие.

В чем ты создаешь входной файл? Создай его в обычном Блокноте. Если у тебя продвинутый редактор, то посмотри, не стоит ли там где-нить опция записи в формате Unix. На всякий случай я прикрепляю нормальный (виндусовый) файл. Признаком "нормальной виндусовости", кстати, может служить длина файла. Она должна быть по крайней мере 29 байт. Присланный тобой файл содержит 21 байт.

Нажмите для просмотра прикрепленного файла

С названиями переменных и файлов тоже, конечно, желательно быть осторожнее. В этом примере все на самом деле чисто, но лучше избегать всяких in и out и т.п. Береженого Бог бережет.. smile.gif


хаха, точно, во я дурачок. спасибо.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.