Упражнения на C: переставить массив так, чтобы arr [i] = i
Массив C: упражнение 101 с решением
Напишите программу на C, чтобы переставить массив таким образом, чтобы arr [i] = i.
Пример решения:
Код C:
#include<stdio.h>
int arrayRearrange(int arr1[], int l)
{
for (int i = 0; i < l; i++)
{
if (arr1[i] != -1 && arr1[i] != i)
{
int x = arr1[i];
while (arr1[x] != -1 && arr1[x] != x)
{
int y = arr1[x];
arr1[x] = x;
x = y;
}
arr1[x] = x;
if (arr1[i] != i)
{
arr1[i] = -1;
}
}
}
}
int main()
{
int arr1[] = { 2, 5, -1, 6, -1, 8, 7, -1, 9, 1 };
int n = sizeof(arr1) / sizeof(arr1[0]);
int i = 0;
//------------- print original array ------------------
printf("The given array is: \n");
for(i = 0; i < n; i++)
{
printf("%d ", arr1[i]);
}
printf("\n");
//-----------------------------------------------------------
printf("The new array is: ");
arrayRearrange(arr1, n);
for (int i = 0; i < n; i++)
printf("%d ",arr1[i]);
}
Пример вывода:
Данный массив: 2 5 -1 6 -1 8 7 -1 9 1 Новый массив: -1 1 2 -1 -1 5 6 7 8 9
Блок - схема:
Редактор кода программирования C:
Улучшите этот пример решения и опубликуйте свой код через Disqus.
Previous: написать программу на C, которая будет возвращать количество скоплений (ряд из 2 или более смежных элементов с одинаковым значением) в данном массиве.
Далее: Напишите программу на C, чтобы переставить массив в таком порядке, чтобы он был наименьшим, самым большим, вторым самым маленьким, вторым по величине и так далее.
Новый контент: Composer: менеджер зависимостей для PHP , R программирования
disqus2code