Руководство полного чайника по программированию на языке Си


Задача инвертирования массива целых чисел


/* Задача инвертирования массива целых чисел */

#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); }




- Начало -  - Назад -  - Вперед -