Форум «Всё о Паскале» _ Задачи _ перечисляем строки в массив
Автор: 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)
а как ты данные в текстовый файл вносишь? плз выложи те файлы
не, если файлы с расширением 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
гм .... фпц?
ЗЫ а у тебя не виста?
Автор: doorway 16.09.2010 19:34
Цитата(Rian @ 16.09.2010 16:03)
гм .... фпц?
ЗЫ а у тебя не виста?
нет, хр, а есть тот ТР, на котором у вас пошло.
Автор: 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 и out и т.п. Береженого Бог бережет..
Автор: 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 и out и т.п. Береженого Бог бережет..