The even/odd function does not work...here is what I have so far. Everything works except for the evenodd function. I am supposed to get the even numbers to list first, then the odd numbers. It should look like this:
Original: 9 8 7 6 5 4 3 2 1
Reversed: 1 2 3 4 5 6 7 8 9
Original: 9 8 7 6 5 4 3 2 1
Even: 2 4 6 8 5 3 7 9 1
Code:#include <stdio.h> #include <stdlib.h> #define N 9 /* MAIN */ void revArray(int arr[]) { int temp[N]; int i; for(i = 0; i < N; ++i) { temp[i] = arr[N - 1 -i]; } for(i = 0; i < N; ++i) { arr[i] =temp[i]; } } int *revElement(int arr[]) { static int idx = N; idx = --idx; return arr + idx; } void evenOdd(int odd[]) { int i; int evenTemp[N/2]; int oddTemp[(N-1)/2]; char tempOdd; for(i=0; i<(N-1)/2; i++) { if(odd[i]%2 == 0) /* if even integer*/ evenTemp[i] = odd[i]; /*store even numbers temporary */ elseoddTemp[i]= odd[i]; /*store odd numbers temporary */ } for(i=0; i<(N-1)/2; i++) { odd[i]=evenTemp[i]; /*swap even numbers first in the array*/ odd[N-1-i]=oddTemp[i]; /*swap odd numbers last in the array */ } } int main(int argc, char **argv) { int a[N]; int idx; int *p = a; while(p < a + N) *p++ = a + N - p; printf("Original: "); p = a; while(p < a + N) printf("%2d ",*p++); /* Part A: Reverse the array */ revArray(a); printf("\nReversed: "); p = a; while(p < a + N) printf("%2d ",*p++); printf("\n"); /* Part B: Return elements in reverse order */ printf("Original: "); for (idx = 0; idx < N; idx++) { printf("%2d ",*revElement(a)); } printf("\n"); /* Part C: Put even numbers first, odd numbers last in the array. Order of the elements is not important as long as all evens are before first odd */ printf("Even: "); evenOdd(a); p = a; while(p < a + N) printf("%2d ",*p++); printf("\n"); system("pause"); }



1Likes
LinkBack URL
About LinkBacks




Im sorry everyone. 