Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2012, 15:52   #1
jager666
 
Регистрация: 09.11.2012
Сообщений: 7
По умолчанию Агент 007 узнал, что в секретном сейфе трёхзначный код, в котором все три цифры разные

Агент 007 узнал, что в секретном сейфе трёхзначный код, в котором все три цифры разные. При этом средняя цифра равна разности крайних цифр. Составить программу, которая напечатает для него все такие числа.
Решить нужно с помощью оператора цикла. Заранее спасибо.
jager666 вне форума Ответить с цитированием
Старый 10.11.2012, 18:31   #2
brunis
 
Регистрация: 17.07.2012
Сообщений: 8
По умолчанию

Код:
var i,j,l:byte;
begin
  For i:=0 to 9 do
    For l:=0 to 9 do
      For j:=0 to 9 do
        if (i<>l) and (l<>j) and(i<>j) then
          if l=i-j then writeln(i:3,l:3,j:3);
  readln;
end.
brunis вне форума Ответить с цитированием
Старый 10.11.2012, 18:46   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
var
  i, j: byte;

begin
  for i := 0 to 9 do
    for j := 0 to 9 do
      if (i <> abs(i - j)) and (j <> abs(i - j)) and (i <> j) then 
        writeln(i, abs(i - j), j);   
  readln;
end.
brunis:
1) разность может быть отрицательной
2) не нужно делать еще 1 вложенный цикл, когда известно значение средней цифры

Без учета 1 замечания Ваше решение вполне приемлемо по времени.
Но можно пойти еще дальше:
Число имеет вид A |A-B| B
A - 1-я цифра
|A-B| - 2-я цифра
B - 3-я цифра
Требуется, чтобы A <> B и A <> |A-B| и B <> |A-B|
Из всех этих условий получим:
A <> 0
B <> 0
A <> B
B <> A/2
B <> 2A
Возможно, можно написать еще более быстрое решение, опираясь на полученные неравенства (а может и нет ).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 10.11.2012 в 19:01.
BDA вне форума Ответить с цитированием
Старый 10.11.2012, 19:13   #4
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Вот немного быстрее без использования условий и с изменяемыми границами циклов
Код:
var
  i, j: byte;

begin
  for j := 0 to 9 do writeln(j, 0, j);
  
  for i := 1 to 9 do
    for j := 0 to 9-i do begin
      writeln(j, i, j+i);  
      writeln(j+i, i, j); 
    end;
  readln;
end.
eoln вне форума Ответить с цитированием
Старый 10.11.2012, 19:26   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

eoln, безусловно быстрее, но
Цитата:
все три цифры разные
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 10.11.2012, 20:02   #6
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Точно, не заметил условие
Код:
var
  i, j: byte;

begin  for i := 1 to 8 do
    for j := 1 to 9-i do if (i<>j) then begin
      writeln(j, i, j+i);  
      writeln(j+i, i, j); 
    end;
  readln;
end.
eoln вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти степень числа N, у которой три последние цифры одинаковые. Vika_0_0 Паскаль, Turbo Pascal, PascalABC.NET 7 11.03.2012 10:24
Вывести номер столбца в котором все элементы отрицательные. Jully19 Помощь студентам 7 22.06.2011 19:34
Найти позицию кратчайшей последовательность в списке A в котором встречаются все значения из списка B. xaoc2 Свободное общение 1 12.06.2011 23:26
ИЗ ОДНОЙ ОБЩЕЙ В ТРИ РАЗНЫЕ spburger Microsoft Office Excel 1 30.11.2009 19:29