#include #include #include #include //#include #include #include "array.h" void fill_array(Array *a); void output_array(Array *a); void shift_array(Array *a); Array *average_adjacent(Array *a); void fill_array(Array *a) { for(int i = 0; i < a -> size; i++) { a->data[i] = (double)rand()/RAND_MAX*200.0-100.0; //generate numbers betw. -100 and +100 } } void output_array(Array *a) { for(int i = 0; i < a -> size; i++) { printf("array[%i] = %.4f\n", i, a->data[i]); } } void shift_array(Array *a) { double array_first_pos = a->data[0]; // printf("\narray1,pos0 = %f\n", a->data[0]); //debug for (int i = 0 ; i < (a -> size)-1 ; i++) { a->data[i] = a->data[i+1]; } a->data[(a->size)-1] = array_first_pos; } Array *average_adjacent(Array *a) { Array *Array_2 = (Array *) malloc(sizeof(Array)); if (Array_2 == NULL) printf("\nMalloc Error creating array!\n"); Array_2 -> size = ((a->size)/2); Array_2 -> data = (double *) malloc(sizeof(double)*(Array_2->size)); if ((Array_2 -> data) == NULL) printf("\nMalloc Error creating data!\n"); //printf("\n\n A2 Size: %i\n\n", Array_2->size); //debug for(int i =0 ; i < (Array_2->size) ; i++) { Array_2->data[i] = (((a->data[2*i])+(a->data[2*i+1]))/2); } return (Array_2); } int main(int argc, char *argv[]) { srand((double)time(NULL)); //check if user input is valid if (argc != 2) { printf("\ninput value incorrect!\n"); return 1; } Array *Array_1 = (Array *) malloc(sizeof(Array)); if (Array_1 == NULL) { printf("\nMalloc Error creating array!\n"); return 1; } Array_1 -> size = atoi(argv[1]); Array_1 -> data = (double *) malloc(sizeof(double)*(Array_1->size)); if ((Array_1 -> data) == NULL) { printf("\nMalloc Error creating data!\n"); return 1; } fill_array(Array_1); printf("\nArray 1\n"); output_array(Array_1); shift_array(Array_1); printf("\nShift Array 1 left by 1\n"); output_array (Array_1); Array *Array_2 = average_adjacent(Array_1); printf("\nArray 2 average\n"); output_array(Array_2); //return mem to os free(Array_1 -> data); free(Array_1); free(Array_2 -> data); free(Array_2); return 0; }