Last active
December 5, 2017 15:46
-
-
Save iamtakingiteasy/343a447f0bf9c3e88685e872fbba5812 to your computer and use it in GitHub Desktop.
Fran Review #1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #include <stdio.h> | |
| // вместо обьявления глоабльных переменных, лучше передавать контекст в каждую из функций, | |
| // это уменьшает число побочных эффектов и упрощает поддержку кода | |
| 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 (int i = 0; i < n; 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]; | |
| } | |
| // я бы использовал int row* для универсальности | |
| 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); | |
| } | |
| // лучше использовать сигнатуру int main(int argc, char **argv) и делать return 0; в конце или return 1; в случае ошибки | |
| void main(){ | |
| reverse(arr, arrLen); | |
| printit(arr, arrLen); | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #include <stdio.h> | |
| void array_print(int *arr, int len) { | |
| for (int i = 0; i < len; i++) { | |
| printf("%2d", arr[i]); | |
| if (i < len-1) { | |
| putchar(' '); | |
| } | |
| } | |
| putchar('\n'); | |
| } | |
| void array_shift(int *arr, int len) { | |
| int tmp = arr[0]; | |
| for (int i = 0; i < len-1; i++) { | |
| arr[i] = arr[i+1]; | |
| } | |
| arr[len-1] = tmp; | |
| } | |
| // итеративное решение вместо рекурсивного | |
| void array_reverse_iterative(int *arr, int len) { | |
| for (int i = 0; i < len; i++) { | |
| array_print(arr, len); | |
| array_shift(arr, len-i); | |
| } | |
| } | |
| int main(int argc, char **argv) { | |
| int arr[] = {1,5,10,15,20,25,30}; | |
| int len = sizeof(arr) / sizeof(int); | |
| array_reverse_iterative(arr, len); | |
| return 0; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment