/* 22, 20, 24, 8, 8, 8, 20 18.5, 15.0, 12.0, 11.0, 11.0, 16.0 (44 - 8 + 8)/4 (44 - 8 + 28)/4 C*length_of_array*size_of_window C*size_of_window + C*length_of_array */ // Directives: #include #include #include #include using namespace std; // Prototypes: int biggest(int data[], size_t n); bool has_specified_value(int data[], size_t n, int value); template void print_array(T data[], size_t n); void set_alternating_elements(int data[], size_t n, int value); void swap_elements(int data1[], int data2[], size_t n); void smoothify(int data_in[], double data_out[], size_t n); // Function definitions: //---------------------------------------------------------- int main() { int a[10] = {100,101,102,103,104,105,106,107,108,42}; int b[10] = {100,101,102,103,104,105,106,107,108,42}; double out[10]; cout << "Array a: "; print_array(a,10); cout << "Array b: "; print_array(b,10); set_alternating_elements(a,10,-9001); swap_elements(a, b, 10); cout << "Array a: "; print_array(a,10); cout << "Array b: "; print_array(b,10); if (has_specified_value(a, 10, -9001)) { cout << "a has -9001!" << endl; } if (has_specified_value(b, 10, -9001)) { cout << "b has -9001!" << endl; } smoothify(a,out,10); cout << "Array a: "; print_array(a,10); cout << "Array out: "; print_array(out,10); cout << "The biggest element in a is: " << biggest(a,10) << endl; cout << "Integer takes " << sizeof(int) << " bytes" << endl; cout << "size_t takes " << sizeof(size_t) << " bytes" << endl; return EXIT_SUCCESS; } //---------------------------------------------------------- //---------------------------------------------------------- int biggest(int data[], size_t n) { assert(n > 0); size_t i; int ans = data[0]; for (i = 1; i < n; ++i) { if (data[i] > ans) { ans = data[i]; } } return ans; } //---------------------------------------------------------- //---------------------------------------------------------- bool has_specified_value(int data[], size_t n, int value) { size_t i; for (i = 0; i < n; ++i) { if (data[i] == value) { return true; } } return false; } //---------------------------------------------------------- //---------------------------------------------------------- // This function prints n numbers in the array data // one number per line template void print_array(T data[], size_t n) { size_t i; for (i = 0; i < n; ++i) { cout << data[i] << " "; } cout << endl; } //---------------------------------------------------------- //---------------------------------------------------------- // data acts like reference parameter void set_alternating_elements(int data[], size_t n, int value) { size_t i; for (i = 0; i < n; i += 2) { data[i] = value; } } //---------------------------------------------------------- //---------------------------------------------------------- void swap_elements(int data1[], int data2[], size_t n) { size_t i; int temp; for (i = 0; i < n; ++i) { // Swap data1[i] and data2[i] temp = data1[i]; data1[i] = data2[i]; data2[i] = temp; } } //---------------------------------------------------------- //---------------------------------------------------------- void smoothify(int data_in[], double data_out[], size_t n) { size_t i; for (i = 0; i < n-1; ++i) { data_out[i] = (data_in[i] + data_in[i+1])/2.0; } data_out[n-1] = (data_in[n-1] + 0)/2.0; } //----------------------------------------------------------