Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- inline double f0(int value) {
- return tan((double)value + 12.28);
- }
- inline double f1(int value) {
- return (double)value - 7.92;
- }
- inline double f2(int value) {
- return sqrt(pow((double)value, 4) + 3.32);
- }
- int main(int argc, char *argv[])
- {
- const int ROWS = 2;
- unsigned int K;
- scanf_s("%u", &K);
- // Allocate memory and make each R[i, j]
- int **R;
- R = (int**)malloc(ROWS * sizeof *R);
- for(int i = 0; i < ROWS; ++i) {
- R[i] = (int*)malloc(K * sizeof *R[i]);
- for(int j = 0; j < K; ++j) {
- scanf_s("%d", &R[i][j]);
- }
- }
- // Allocate S array to store results
- double* S = (double*)malloc(sizeof(double) * K);
- // Create array for functions pointers
- double (*functions[])(int) = { f0, f1, f2 };
- // Iterate over R to set elements of S
- for (int m = 0; m < K; ++m) {
- int value = R[0][m];
- int passValue = R[1][m];
- switch (value) {
- case 0:
- S[m] = functions[0](passValue);
- break;
- case 1:
- S[m] = functions[1](passValue);
- break;
- case 2:
- S[m] = functions[2](passValue);
- break;
- default:
- S[m] = R[1][m];
- break;
- }
- }
- // Print results to the user
- for (int i = 0; i < K; ++i) {
- printf("S[%d] = %f\n", i, S[i]);
- }
- // Free memory
- for(int i = 0; i < ROWS; ++i) {
- free(R[i]);
- }
- free(R);
- free(S);
- return 0;
- }
Add Comment
Please, Sign In to add comment