Знатоки языка Си помогите! В чем смысл кода, а именно цикла for a[i]=a[j];
a[j]=0;
j++;,
Задание: Преобразовать массив таким образом, чтобы сначала располагались все элементы
равные нулю, а потом все остальные.
Код:
#include
#include


int main(void)
{
int j=0, i, S=0, a[5] = {5, 6, 2, 0, 3};


for (i=0; i<5; i++)
{
if (!a[i])
{
a[i]=a[j];
a[j]=0;
j++;
}
}

for (i=0; i<5; i++) printf(" %d", a[i]);
}

Ответы

Ответ дал: alexshor
0

Ответ:

Объяснение:

int main()

{

   // j - переменная заведена для подсчета нулевых элементов - начальное значение 0

   int j = 0, i, S = 0, a[5] = { 5, 6, 2, 0, 3 };

   for (i = 0; i < 5; i++) // этот цикл перебирает все элементы массива

   {

       if (!a[i]) // запись равносильна "if (a[i] == 0)": если этот элемент нулевой

       {

           a[i] = a[j]; // запоминаем в текущий элемент значение, которое идет сразу за последним нулевым элементом

           a[j] = 0;    // а его обнуляем, т.е. как бы меняем значения в позициях i и j местами

           j++;         // увеличиваем количество нулевых элементов

       }

   }

   for (i = 0; i < 5; i++) printf(" %d", a[i]);

   return 0;

}

Вас заинтересует