Язык си. Выход из двойного цикла
Данный код находит первый элемент двумерного массива, который равен среднему арифметическому всех элементов и запоминает номер столбца. Как правильно выйти из двойного цикла, где у меня написан break?
s=0;
k=m*n;//размерность массива
for (i=0;i<m;i++)
for (j=0;j<n;j++)
s+=a[i][j];//сумма элементов массива
sr=s/k;//среднее арифметическое всех элементов
for (i=0;i<m;i++)
for (j=0;j<n;j++)
{
if (fabs(a[i][j]-sr)<eps) //сравниваем на равенство элемент массива и среднее арифметическое
{
u=j; //Запоминаем номер столбца первого элемента, который равен ср. арифметическому элементов массива
break;
}
if ( (i==(m-1))&&(j==(n-1)) )
{printf("Элемент не найден");
return 1;
}
}
может как-то так:
for (int i = 0, jobDone = 0; i < m && !jobDone; i++)
for (int j = 0; j < n && !jobDone; j++)
{
if (щастье) { jobDone = 1; break; }
}
for(i=0;i<m;i++){for (j=0;j<n;j++)if(fabs(a[i][j]-sr)<eps)break; if(i<m)break;}
if(j< n)printf("%d\n",j); else printf("alack\n");
А еще проще по используемой логике сделать всё это функцией с выходом по return.
Иногда полезно не лепить все в одну кучу, а как раз разбивать задачу на подзадачи. Интересно, а ведь наверняка преподы объясняют им такие мелочи
Break;
} break;