Помощь - Поиск - Пользователи - Календарь
Полная версия: Олимпиадная задача: про билеты.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
AND
Думаю, всем известная задача про счастливые 6-значные билеты. Занимаюсь паскалем пару дней) так что делел на основе "имеющихся знаний". Вроде как сделал, да только 1 пункт не знаю как сделать - размещать ответы в 2 столбика + можно ли что бы они были ВСЕ? Желатьно сделать простыми средствами.
Цитата
PROGRAM p;
VAR
pr1, pr2, i, n1, n2, n : longint;
BEGIN
n:=0;
Write('Ot... ');
Readln(pr1);
Write('Do... ');
Readln(pr2);
while (pr1=pr2) or (pr1>pr2) or (pr1<0)
do Write('Error!!!');

for i:=pr1 to pr2 do
begin
n1:=(i div 1000);
n2:=(i mod 1000);
if
(n1 div 10)-(n1 div 100)*9+(n1 mod 10)=
(n2 div 10)-(n2 div 100)*9+(n2 mod 10)
then
begin
Writeln(i);
n:=n+1
end;
end;
writeln(n);
read(n)
end.
volvo
Цитата
размещать ответы в 2 столбика
довольно просто:

if
(n1 div 10)-(n1 div 100)*9+(n1 mod 10) =
(n2 div 10)-(n2 div 100)*9+(n2 mod 10)
then begin
Write(i:10); { <-- изменить здесь }
if n mod 2 = 0 then writeln; { <--- и добавить вот эту строку }
n:=n+1
end;


Цитата
+ можно ли что бы они были ВСЕ?
Все на экране одновременно? Ну, вот смотри: ввел я от 111111 до 222222, получил список из 5802 шестизначных чисел. Это получается 34812 символов... Всего на одну строку текстового экрана помещается 80 символов. Простое арифметическое действие показывает, что даже если не печатать пробелы между числами, на это потребуется 435 строк... А у тебя в наличии всего 25 (или 50 - в лучшем случае).

Выводи список в файл.
AND
Цитата
Write(i:10); { <-- изменить здесь }
if i mod 2 = 0 then writeln; { <--- и добавить вот эту строку }

Спасибо, а не моглибы объямничь, что это значит))?
volvo
{
Печатаем число в поле из 10 символов (4 пробела и 6 - само число, оно же шестизначное)
}
Write(i:10);

{
Переводим строку, только если N - четное (остаток от деления на 2 = 0),
а поскольку четный номер - у каждого второго числа, то после вывода двух чисел
строка и переведется
}
if n mod 2 = 0 then writeln;
AND
Цитата(volvo @ 1.10.2008 19:22) *

{
Печатаем число в поле из 10 символов (4 пробела и 6 - само число, оно же шестизначное)
}
Write(i:10);

{
Переводим строку, только если i - четное (остаток от деления на 2 = 0),
а поскольку четным является каждое второе число, то после вывода двух чисел
строка и переведется
}
if i mod 2 = 0 then writeln;



Нет. Не получается. Там могут идти ПОДРЯТ и четные или нечетные. Иногда (часто) получается по 3 или 4 числа в строке.
volvo
Упс... Я там по ошибке поставил i... Надо проверять N, естественно - то есть четность/нечетность порядкового номера числа... Исправил предыдущие посты...
AND
Цитата(volvo @ 1.10.2008 22:40) *

Упс... Я там по ошибке поставил i... Надо проверять N, естественно - то есть четность/нечетность порядкового номера числа... Исправил предыдущие посты...

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