Перше, що треба знати: цей приклад на С# використовує можливості мови, яких нема в Сі, тому дії, що дадуть той же результат, доведеться робити іншим способом.
Спробуймо записати словами, що має робити ця програма (поки що наполовину псевдокод):
#include<stdio.h>
main()
{
int i, j;
int arr[24] =...;// Масив із 24 елементів, кожен з яких лежить у діапазоні від -10 до 26
...;//Вивести всі елементи масиву arr у рядок, розділений комами
int negativeIndexes[] = ...;//масив індексів елементів масиву arr, що мають від'ємне значення
int negativeIndexesLength = ...;//змінна, що містить кількість знайдених від'ємних елементів
for (i = 0, j = negativeIndexesLength - 1; i < j; i++, j--)
{
int t = arr[negativeIndexes[i]];
arr[negativeIndexes[i]] = arr[negativeIndexes[j]];
arr[negativeIndexes[j]] = t;
}
...; //ще раз вивести arr
}
Ті рядки, де стоять трикрапки — псевдокод, замість якого треба буде написати справжній код. Наприклад, замість int arr[24] =...; має бути щось таке:
int arr[24];
for(i=0; i<24; i++)
arr[i]=rand()%36 - 10; //rand()%36 — це випадкове число від 0 до 35 включно
Вивід елементів — також циклом (спробуйте написати самостійно).
Масив індексів від'ємних елементів можна зробити такого ж розміру, що й arr (бо від'ємних елементів у ньому гарантовано буде не більше, ніж усіх елементів разом). Сішні масиви не мають вбудованого лічильника елементів (.Length у сішарпі), тому оголошуємо окрему змінну, в яку буде записуватись кількість елементів, які ми туди додали. Пошук від'ємних елементів виглядатиме приблизно так:
int negativeIndexes[24];
int negativeIndexesLength=0;
for(i=0; i<24; i++)
if(arr[i]<0) negativeIndexes[negativeIndexesLength++]=i;
Найважчу частину я зробив. Тепер скомпонуйте все в одну програму й допишіть те, що лишилось недописаним.