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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2013, 00:42   #1
gjkg
 
Регистрация: 20.04.2013
Сообщений: 6
Печаль Разработка циклических алгоритмов (Делфи)

Определить k - количество трехзначных натуральных чисел, сумма цифр которых равна n (1<=n<=27). Операции (/, div и mod) не использовать.
gjkg вне форума Ответить с цитированием
Старый 20.06.2013, 00:51   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,431
По умолчанию

Первое, что приходит в голову, 3 вложенных друг в друга цикла. Внешний от 1 до 9. Внутренние от 0 до 9. Внутри самого глубокого цикла проверка на то, что сумма счетчиков всех циклов равна n, и увеличение k. В принципе, можно придумать что-нибудь более изящное
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 20.06.2013, 08:34   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Первое, что приходит в голову, 3 вложенных друг в друга цикла. Внешний от 1 до 9. Внутренние от 0 до 9. Внутри самого глубокого цикла проверка на то, что сумма счетчиков всех циклов равна n, и увеличение k. В принципе, можно придумать что-нибудь более изящное
я бы так и делал!
и, на мой взгляд, ничего проще и изящнее и не будет!
Да и зачем, что "неизящного" в трёх вложенных циклах ?!!
(вопрос риторический )
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.06.2013, 11:54   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Навряд-ли проще, но изящнее и без всяких делений
Код:
    j:=137;  //исходное число - от 0 до 999, иначе полный абзац
    for k:=1 to 9 do begin
      j:=j shl 1;
      if ((j and $3C00) shr 10)>4 then j:=(j and $3FC3FF) or ((((j and $3C00) shr 10)+3) shl 10);
      if ((j and $3C000) shr 14)>4 then j:=(j and $3FC3FFF) or ((((j and $3C000) shr 14)+3) shl 14);
      if ((j and $3C0000) shr 18)>4 then j:=(j and $3FC3FFFF) or ((((j and $3C0000) shr 18)+3) shl 18);
    end;
    j:=j shl 1;
    //искомая сумма
    n:=((j and $3C0000) shr 18)+((j and $3C000) shr 14)+((j and $3C00) shr 10);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 20.06.2013 в 12:38.
Аватар вне форума Ответить с цитированием
Старый 20.06.2013, 12:05   #5
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

хватит двух циклов, по-сути:
Код:
K := 0;
M := N;
If N > 9 Then M := 9;
For I := 1 To M do
  begin
    If N - I > 9 Then L := 9 Else L := N-I;
    For J := 0 To L do
     If N - I - J< 10 Then
       K := K + I*99 + J *9 + N;
  end;
хотя можно и от нижней границы во втором цикле уйти, рассчитав ее заранее.
Правильно поставленная задача - три четверти решения.

Последний раз редактировалось DiemonStar; 20.06.2013 в 13:01.
DiemonStar вне форума Ответить с цитированием
Старый 20.06.2013, 12:07   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Я так полагаю n от 1 до 27 задается. Иначе какой смысл?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование циклических алгоритмов eduard93 Помощь студентам 2 13.03.2012 12:37
Программирование циклических алгоритмов. aleksander_l Помощь студентам 3 10.01.2012 16:11
программирование циклических алгоритмов SiNgLeR C++ Builder 3 11.12.2011 18:24
[VB] Построение циклических алгоритмов Raikerian Помощь студентам 2 04.06.2011 21:22
Программированние циклических алгоритмов Дима82 Помощь студентам 8 11.05.2008 11:31