Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ перечисляем строки в массив

Автор: doorway 15.09.2010 23:53

есть задачка, большая, но я забыл как перечислить нормально строки текстового файла в массив. и большая стала маленькой пока.
входной файл имеет вид
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 15.09.2010 23:58

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

Автор: doorway 16.09.2010 0:02

Цитата(Unconnected @ 15.09.2010 20:58) *

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


перечислить строки текстового файла в массив mass. (текстовый файл: 10 строк, 1 столбик. целые числа).
ну а потом я написал вывести второй элемент массива в файл для проверки.

Автор: Unconnected 16.09.2010 0:12

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

Автор: doorway 16.09.2010 0:21

Цитата(Unconnected @ 15.09.2010 21:12) *

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


Выходной файл создается с нулем. заменил на f2. Все по-прежнему. по шагам все работает как надо, результат - нулевой.

Автор: Rian 16.09.2010 2:15

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

Автор: doorway 16.09.2010 2:25

Цитата(Rian @ 15.09.2010 23:15) *

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


да, файл смотрю правильно, все уже пересмотрел и перепробовал. расширение нормальное. мы ж указываем тип текст. у нас препод ваще все подряд пишет в расширении когда текстовый файл и канает

Автор: Rian 16.09.2010 2:29

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

Автор: doorway 16.09.2010 2:30

Цитата(Rian @ 15.09.2010 23:29) *

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




Прикрепленные файлы
Прикрепленный файл  inpu.txt ( 21 байт ) Кол-во скачиваний: 232
Прикрепленный файл  F2.TXT ( 1 байт ) Кол-во скачиваний: 265

Автор: Rian 16.09.2010 2:34

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

assign(inp,'inpu.inp');

assign(out,'outpu.out');

Автор: doorway 16.09.2010 2:50

Цитата(Rian @ 15.09.2010 23:34) *

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

assign(inp,'inpu.inp');

assign(out,'outpu.out');

не, если файлы с расширением txt, то и п роге я их меняю. с файлами все впорядке. иначе ошибка вылетает файл не найден

Автор: Rian 16.09.2010 2:52

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

Автор: doorway 16.09.2010 3:32

Цитата(Rian @ 15.09.2010 23:52) *

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

нули рисует

Автор: Unconnected 16.09.2010 3:41

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

Автор: doorway 16.09.2010 4:02

Цитата(Unconnected @ 16.09.2010 0:41) *

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

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

Автор: Rian 16.09.2010 15:47

Цитата(doorway @ 16.09.2010 0:02) *

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

блин на трёх компах проверил.... работает...

Автор: volvo 16.09.2010 15:48

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

Автор: doorway 16.09.2010 17:53

Цитата(volvo @ 16.09.2010 12:48) *

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

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

Автор: Rian 16.09.2010 19:03

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

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

Автор: doorway 16.09.2010 19:34

Цитата(Rian @ 16.09.2010 16:03) *

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

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

нет, хр, а есть тот ТР, на котором у вас пошло.

Автор: volvo 16.09.2010 19:36

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

Автор: Freedom 16.09.2010 19:49

Цитата(doorway @ 16.09.2010 14:53) *

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


Попробуйте readln на read заменить

Автор: doorway 17.09.2010 3:33

Цитата(volvo @ 16.09.2010 16:36) *

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

да уже попробовал на эмуляторе дос под мандривой(у меня как вторая система) - один хер

Автор: Lapp 17.09.2010 6:33

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

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

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

Прикрепленный файл  in_data.txt ( 29 байт ) Кол-во скачиваний: 407


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

Автор: doorway 17.09.2010 10:25

Цитата(Lapp @ 17.09.2010 3:33) *

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

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

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

Прикрепленный файл  in_data.txt ( 29 байт ) Кол-во скачиваний: 407


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


хаха, точно, во я дурачок. спасибо.