Добрый день! Решала задачу такого содержания: во входном файле в первой строке указано количество чисел, записанных ниже в строку или столбик, например:
3
23 45 78
или:
3
23
45
78
В файл вывода числа записываются в обратном порядке в строчку, т.е.: 78 45 78 и в первом, и во втором случае. Кроме того, в первой строчке может стоять 0 или ничего, тогда все равно считываются числа, записанные далее в строчку и выводятся в обратном порядке, напр.:
0
3 56 8
Вывод:
8 56 3
Если в первой сроке стоит 0 и далее чисел нет, либо входной файл пуст, то в выходной файл выводится сообщение "чисел нет". У меня, кажется, получилось все, кроме случая, когда колличечтво чисел в файле не дано, но числа есть, напр.:
(пустая строка)
4 6 8
Выводится в файл не 8 6 4, а нули! В отдельной программе я эту задачу решаю, все получается, а "добавить" в ту, что привожу ниже, не получается. Пожалуйста, подскажите, где ошибка!
Прикрепленные файлы
REVERSE.PAS ( 843 байт )
Кол-во скачиваний: 233
а как классифицировать случай:
3
23
34
12
то ли это 4 числа без указанного количества, то ли 3, но с количеством?
Этот случай не берется во внимание. Предполагается, что количество чисел указывается правильно
Заработалась я, простите. Дала глупый ответ В данном случае это 3 числа. Т.е. в выходном файле должно быть 12 34 23. Этот вариант у меня, кажется, выполняется корректно.
Ты ошибочно считаешь, что если считывать число оператором ReadLn, то в случае пустой строки он введет ноль. Ничего подобного, можешь поэкспериментировать на вводе с клавы. Вот простая программка для теста:
var
n:integer;
begin
ReadLn(n);
WriteLn('n=',n);
end.
Большое спасибо за ваш комментарий! Действительно, оформление решений у меня храмает (не только сами решения ). Буду исправляться.