Для петли условие не выполнено, не знаю почему - PullRequest
0 голосов
/ 18 января 2019

Со следующим кодом:

void pivot(int n, int m, int evi, int lvi, float a[m][n]) {
  int i,j;
  float s = a[lvi][evi];
  for (i = 0; i < n; i++) a[lvi][i] /= s;
  for (j = 0; (j < m) && (j != lvi); j++) {
    s = a[j][evi];
    for (i = 0; i < n; i++) {
      a[j][i] -= s * a[lvi][i];
      printf("tab[%d][%d] = %f\n", j, i, a[j][i]);
    }
  }
}
float tab[3][6] = {{0.0}};
tab[0][0] = 200;
tab[0][1] =-200;
tab[0][2] = 60;
tab[0][3] =-60;
tab[0][4] = 1;
tab[1][0] =-100;
tab[1][1] = 100;
tab[1][2] =-150;
tab[1][3] = 150;
tab[1][5] = 1;

Когда я звоню

pivot(6,3,0,0,tab)

второй цикл for в сводной функции (с оператором &&) никогда не вводится, почему?

1 Ответ

0 голосов
/ 18 января 2019
Цикл

A for останавливается, как только условие становится ложным. Если значение false при запуске цикла, цикл вообще не вводится.

Если вы хотите пропустить определенные строки, вы должны поставить галочку в теле цикла.

  for (j = 0; j < m; j++) {
    if (j == lvi) {
      continue;
    }
    s = a[j][evi];
    for (i = 0; i < n; i++) {
      a[j][i] -= s * a[lvi][i];
      printf("tab[%d][%d] = %f\n", j, i, a[j][i]);
    }
  }
...