Skip to content

Instantly share code, notes, and snippets.

@iamtakingiteasy
Last active December 5, 2017 15:46
Show Gist options
  • Select an option

  • Save iamtakingiteasy/343a447f0bf9c3e88685e872fbba5812 to your computer and use it in GitHub Desktop.

Select an option

Save iamtakingiteasy/343a447f0bf9c3e88685e872fbba5812 to your computer and use it in GitHub Desktop.
Fran Review #1
#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);
}
#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