Задача инвертирования массива целых чисел
/* Задача инвертирования массива целых чисел */
#include
int arr[] = {1, 5, 10, 15, 20, 25, 30}; int arrLen = sizeof(arr) / sizeof(arr[0]); /* размер массива */
/* Распечатка массива в строку */ void printit(int row[], int n){ int i;
for(i=0; i < n; i++){ printf("%d", row[i]);
if(i == n-1) putchar('\n'); else putchar(' '); } } /* Печать отступа. Отладочная функция */ void printShift(int n){ n = arrLen - n; while(n > 0){ printf(" "); n--; } } /* Сдвиг массива */ void shiftleft(int row[], int n){ int i;
for(i=1; i < n; i++) row[i-1] = row[i]; } /* Инвертирование */ void reverse(int row[], int n){ int pocket;
printShift(n); /* трассировка */ printf("CALLED reverse(row, %d)\n", n); /* трассировка */
if(n <= 1){ printShift(n); /* трассировка */ printf("return from reverse(row, %d);\n", n); /* трассировка */ return; }
pocket = row[0]; shiftleft(row, n); row[n-1] = pocket;
printShift(n); /* трассировка */ printit(arr, arrLen); /* трассировка */
reverse(row, n-1);
printShift(n); /* трассировка */ printf("all done; return from reverse(row, %d);\n", n); /* трассировка */ } void main(){ reverse(arr, arrLen); printit(arr, arrLen); }