Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Пользователь


Сообщения: 121
Благодарности: 35

Профиль | Отправить PM | Цитировать


Цитата Любезный:
Как лучше переписать такой код, чтобы убрать goto, »
Код: Выделить весь код
const SettingCount = 15;
var SortedSettingNumbers: array [0..SettingCount-1] of smallint;
    i, j, r: smallint;
label lab1;
...

 for I:=0 to SettingCount-1 do SortedSettingNumbers [i]:=-1; //Инициализация значений элементов массива? А нужно ли?
 Randomize;
 for I:=0 to SettingCount-1
  do if SortedSettingNumbers [i]=-1 //Зачем это условие
      then begin
            b:=true;
            repeat
                 begin
                      r:=Random (SettingCount);
                      // проверить сгенерированное число на повтор
                      for j:=0 to SettingCount-1
                       do if SortedSettingNumbers [j]=r
                           then begin
                                 b:=false;
                                 break;
                           end;
                end;
            until b;
            // если повторяется - сгенерить другое
             
               SortedSettingNumbers [i]:=r;
           end;
Вроде так. Проверить не на чем, но вроде должно работать.
По поводу оптимизации смотрите мои комментарии.
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:49, 01-10-2012 | #3