|  1.12.2014 / 12:13 |  | 
| Naik    Пользователь 
  Сейчас: Offline 
 Имя: %name%Регистрация: 14.03.2010
 
 | Ксакеп,  Что значит не должно? Метод, в нем 3 цикла вложенных, всередине условие, не такая и редкая ситуация, а если это в анонимном классе?  Изменено Naik (1.12 / 12:13) (всего 1 раз)
 | 
|  1.12.2014 / 12:43 |  | 
| aRiGaTo    Пользователь 
  Сейчас: Offline 
 Имя: SnorkОткуда: Yerevan
 Регистрация: 03.02.2010
 
 | __________________Naik, вложенность циклов усложняет понимание кода. Обычно, их выносят в отдельный метод. Кроме того, по некоторым метрикам (для подсчёта сложности) считается вложенность. Чем сложнее код, тем он хуже - а за плохой код, можно получить от ПМа  
   don't tread on me | 
|  1.12.2014 / 12:51 |  | 
| Naik    Пользователь 
  Сейчас: Offline 
 Имя: %name%Регистрация: 14.03.2010
 
 | aRiGaTo, и как же тут вынести? http://annimon.com/code/?act=view&id=4104  Алгоритм сам по себе простой, но без вложенности никак..Изменено Naik (1.12 / 12:51) (всего 1 раз)
 | 
|  1.12.2014 / 13:01 |  | 
| aNNiMON   Супервизор 
  Сейчас: Offline 
 Имя: ВитёкРегистрация: 11.01.2010
 
 | __________________Naik, Открыть спойлер Закрыть спойлер #define size 5#define true 1#define false 0 typedef struct {    int n, last;} Cell; typedef int bool;  bool hasPath(Cell c1) {    return c1.last != INT_MAX;} /*int findShortPath(Cell M[size][size], int i, int j, int n) {    int min = INT_MAX;    for (int k = 0; k < n; k++) {        bool hasPaths = (hasPath(M[i][k]) && hasPath(M[k][j]));        int sum = hasPaths ? M[i][k].last + M[k][j].last : INT_MAX;        min = (min > sum) ? sum : min;    }    return min;}*/ bool checkForNewIteration(Cell M[size][size], int i, int j, int n) {    int min = INT_MAX; // findShortPath(M, i, j, n);    for (int k = 0; k < n; k++) {        bool hasPaths = (hasPath(M[i][k]) && hasPath(M[k][j]));        int sum = hasPaths ? M[i][k].last + M[k][j].last : INT_MAX;        min = (min > sum) ? sum : min;    }     if (min < M[i][j].last) {        M[i][j].n = min;        // We need one more iteration        return true;    }    M[i][j].n = M[i][j].last;    // Done    return false;} void findPathsShimbel(Cell M[size][size], int n) {    bool run;    int i, j;    while (run) {        run = false;        for (i = 0; i < n; i++) {            for (j = 0; j < n; j++) {                run = checkForNewIteration(M, i, j, size);            }        }        for (i = 0; i < n; i++) {            for (j = 0; j < n; j++) {                M[i][j].last = M[i][j].n;            }        }    }    for (int i = 0; i < size; i++) {        for (int j = 0; j < size; j++) {            printf("[%d.%d] = %d (%d)\t", i, j, M[i][j].last, M[i][j].n);        }        printf("\n");    }}
   let liveИзменено aNNiMON (1.12 / 13:03) (всего 1 раз)
 | 
|  1.12.2014 / 13:05 |  | 
| aRiGaTo    Пользователь 
  Сейчас: Offline 
 Имя: SnorkОткуда: Yerevan
 Регистрация: 03.02.2010
 
 | __________________Naik,  void findPathsShimbel(Cell **M, int n) {    int run = 1, min, i, j, k, sum;    while (run) {        run = 0;        for (i = 0; i < n; i++) {            run = innerCycle(M, n);        }     finalizeMatrix(M, n);    }}
Как-нибудь так. Ну, методам названия нужны более осмысленные
   don't tread on me | 
|  1.12.2014 / 14:08 |  | 
| Naik    Пользователь 
  Сейчас: Offline 
 Имя: %name%Регистрация: 14.03.2010
 
 | aNNiMON, сударь, неплохо, стало понятнее, но тут уже нужно выбирать - вызов метода в цикле, или понятный код
 | 
|  1.12.2014 / 14:16 |  | 
| Ксакеп    Модератор форума 
  Сейчас: Offline 
 Регистрация: 20.06.2012
 | Naik, инлайнинг никто не отменял   | 
|  1.12.2014 / 15:35 |  | 
| Naik    Пользователь 
  Сейчас: Offline 
 Имя: %name%Регистрация: 14.03.2010
 
 | Ксакеп, инлайнинг не работает с циклами
 | 
|  1.12.2014 / 16:14 |  | 
| Ксакеп    Модератор форума 
  Сейчас: Offline 
 Регистрация: 20.06.2012
 | Naik, кхе-кхе, что, простите?
 | 
|  1.12.2014 / 16:56 |  | 
| Naik    Пользователь 
  Сейчас: Offline 
 Имя: %name%Регистрация: 14.03.2010
 
 | Ксакеп,  Нужно проверить    Но есть мнение, что функция с циклами скорее всего не встроется |