Top.Mail.Ru
Ответы

Язык си. Выход из двойного цикла

Данный код находит первый элемент двумерного массива, который равен среднему арифметическому всех элементов и запоминает номер столбца. Как правильно выйти из двойного цикла, где у меня написан 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;
}

}

По дате
По рейтингу
Аватар пользователя
Новичок
6лет

может как-то так:

for (int i = 0, jobDone = 0; i < m && !jobDone; i++)
for (int j = 0; j < n && !jobDone; j++)
{
if (щастье) { jobDone = 1; break; }
}

Аватар пользователя
Искусственный Интеллект
6лет

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.

Аватар пользователя
Просветленный
6лет

Иногда полезно не лепить все в одну кучу, а как раз разбивать задачу на подзадачи. Интересно, а ведь наверняка преподы объясняют им такие мелочи

Аватар пользователя
Мыслитель
6лет

Break;
} break;