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

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

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

Автор: Константин 20.09.2007 21:57

!help.gif Мне надо решить эту задачу на Паскале и без оператора цикла for!!! 1.gif

Напечатать в возрастающем порядке все трёхзначные числа, в десятичной записи которой нет одинаковых цифр. unsure.gif

Зарание Огромное Спасибо! !zdarov.gif

Автор: volvo 20.09.2007 22:10

Цитата
без оператора цикла for

Рекурсию используй...

Автор: Гость 20.09.2007 23:57

Цитата(volvo @ 20.09.2007 18:10) *

Рекурсию используй...

Это как???
Я такого не изучал!

Автор: мисс_граффити 21.09.2007 0:06

ну пользуйся циклом while
и кричать так не надо

Автор: volvo 21.09.2007 0:08

Мало ли что ты не изучал...

Задание поставлено как? Не использовать цикл FOR? Хорошо, есть цикл While... Есть Repeat... А где гарантия, что ты (или твой преподаватель) не скажешь, что нельзя вообще пользоваться циклами? Никакими... Поверь, ты не первый, кто задает вопросы на этот форум. И в основном так и происходит... ПОТОМ выясняется, что нельзя еще это, и это, и вот это...

Поэтому я тебе предложил вариант который не использует само понятие "цикл"... Вообще. Надо - покажу, как...

Автор: Гость 21.09.2007 0:52

Цитата(volvo @ 20.09.2007 20:08) *

Мало ли что ты не изучал...

Задание поставлено как? Не использовать цикл FOR? Хорошо, есть цикл While... Есть Repeat... А где гарантия, что ты (или твой преподаватель) не скажешь, что нельзя вообще пользоваться циклами? Никакими... Поверь, ты не первый, кто задает вопросы на этот форум. И в основном так и происходит... ПОТОМ выясняется, что нельзя еще это, и это, и вот это...

Поэтому я тебе предложил вариант который не использует само понятие "цикл"... Вообще. Надо - покажу, как...

Конечно надо! Можешь показать как решать эту задачу.

Автор: volvo 21.09.2007 1:58

Без циклов - так:

procedure print(n: integer);
var n1, n2, n3: integer;
begin
n1 := n div 100; n2 := (n div 10) mod 10; n3 := n mod 10;
if (n1 - n2) * (n1 - n3) * (n2 - n3) <> 0 then writeln(n);

if n < 999 then print(n + 1);
end;

begin
print(102);
end.


Автор: Гость 21.09.2007 2:12

Цитата(volvo @ 20.09.2007 21:58) *

Без циклов - так:

procedure print(n: integer);
var n1, n2, n3: integer;
begin
n1 := n div 100; n2 := (n div 10) mod 10; n3 := n mod 10;
if (n1 - n2) * (n1 - n3) * (n2 - n3) <> 0 then writeln(n);

if n < 999 then print(n + 1);
end;

begin
print(102);
end.



!zdarov.gif Спасибо тебе ОГРОМНОЕ! Ты реально помог!

Автор: Гость 21.09.2007 2:27

Цитата(Гость @ 20.09.2007 22:12) *

!zdarov.gif Спасибо тебе ОГРОМНОЕ! Ты реально помог!

У меня к тебе последний вопрос: А почему "print(102)" - указанно число 102 ???

Автор: volvo 21.09.2007 3:11

А потому что это - первое трехзначное число, в котором все цифры разные...

Автор: Гость 21.09.2007 3:19

Цитата(volvo @ 20.09.2007 23:11) *

А потому что это - первое трехзначное число, в котором все цифры разные...

Благодарю! Просто нужно было знать это чтобы обьяснить если что....