Помощь - Поиск - Пользователи - Календарь
Полная версия: Перестановка чисел
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Jekaterina
Добрый день! Решала задачу такого содержания: во входном файле в первой строке указано количество чисел, записанных ниже в строку или столбик, например:
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, а нули! В отдельной программе я эту задачу решаю, все получается, а "добавить" в ту, что привожу ниже, не получается. Пожалуйста, подскажите, где ошибка!
мисс_граффити
а как классифицировать случай:
3
23
34
12
то ли это 4 числа без указанного количества, то ли 3, но с количеством?
Jekaterina
Этот случай не берется во внимание. Предполагается, что количество чисел указывается правильно
Jekaterina
Заработалась я, простите. Дала глупый ответ no1.gif В данном случае это 3 числа. Т.е. в выходном файле должно быть 12 34 23. Этот вариант у меня, кажется, выполняется корректно.
Lapp
Ты ошибочно считаешь, что если считывать число оператором ReadLn, то в случае пустой строки он введет ноль. Ничего подобного, можешь поэкспериментировать на вводе с клавы. Вот простая программка для теста:
var
n:integer;
begin
ReadLn(n);
WriteLn('n=',n);
end.

Запусти ее и несколько раз нажми Enter (ввод пустой строки), а потом число (и снова Enter). Ты увидишь, что ReadLn(n) ждет ввода числа, игнорируя пустые строки.
Я рекомендую тебе первую строку читать не в числовую переменную, а в строковую. Затем, если она пустая - переходишь к алгоритму ввода чисел без заранее заданного количества, если в ней что-то есть - обрабатываешь это "что-то" процедурой Val.

Еще небольшое замечание: не ставь пробел между Read/Write и их параметрами - это смотрится странно.. И делай правильное форматирование (отступы нужно увеличивать после кадого begin и уменьшать на каждом end) - включая внешние begin/end программы!
Jekaterina
Большое спасибо за ваш комментарий! Действительно, оформление решений у меня храмает (не только сами решения smile.gif ). Буду исправляться.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.