Тема: Выводит 0
Показать сообщение отдельно
  #2  
Старый 22.10.2014, 10:39
Аватар для madMonia
madMonia madMonia вне форума
Новичок
 
Регистрация: 25.02.2014
Сообщения: 50
Версия Delphi: Delphi XE3
Репутация: 2545
По умолчанию

Давайте систему циклов

Код:
for i:=0 to k do
  for v := 0 to 1 do
    for g := 0 to 1 do
      for l := 0 to 1 do
        for t := 0 to 1 do
          for r := 0 to 1 do
 
            while C[sum] <> k do
            begin
               sum:=a[1]*v+a[2]*g+a[3]*l+a[4]*t+a[5]*r;
               C[sum] := C[sum] + 1;
               if sum=k
                  then
                     writeln (...)
            end;

Что происходит?
1) При первом выполнии цикла While (i=v=g=l=r=t=0) sum=0. Благодаря оператору C[sum] := C[sum] + 1; значение в C[sum] становится равным k, другими словами, С[0]=k, sum=0.
2) Происходит выход из While и запускается новая итерация циклов for, при которой r=1, а все остальные счетчики по прежнему 0. При этом в sum по прежнему 0, а c[sum]=k. В следствии этого, цикл While не выполняется, потому что условие его выполнения ложно. То же происходит для всех последующих итераций, что и создает у вас ощущение, что i, v,g,l,r,t всегда 0. Понятнее стало? Я бы посоветовал что-то поправить, но, если честно, вообще не понял зачем вам while
__________________
Невозможно заточить карандаш тупым топором. Столь же тщетно пытаться сделать это десятком тупых топоров
Ответить с цитированием