Given are the following three functions on integers:
f(x) = x2 g(x) = x + 1 h(x) = x - 1
Implement these functions in C. Next, write a program that accepts on its input an integer n
followed by a series of letters f, g, and h terminated by an equals sign (=).
The output should be the number that is the output that is obtained by applying the given sequence of functions
to the input number. For example, the calculation of f(g(f(h(42)))) is specified by the input
42 hfgf=. The output should be 2829124 because f(g(f(h(42)))) = f(g(f(41))) =
f(g(1681)) = f(1682) = 2829124.
Example 1:
input:
42 hfgf=
output:
2829124
Example 2:
input:
1 fgh=
output:
1
Example 3:
input:
-1 fgh=
output:
1
This is the solution to this:
#include <stdio.h>
long f(size_t x) { return x * x; }
long g(size_t x) { return x + 1; }
long h(size_t x) { return x - 1; }
long doMath(char func, size_t x) {
long value;
switch(func) {
case 'f':
value = f(x);
break;
case 'g':
value = g(x);
break;
case 'h':
value = h(x);
break;
}
return value;
}
int main() {
char input[50];
printf("Input: "); fgets(input, 50, stdin);
int _i = 0, _j = 0;
int num = 0; char funcs[10];
long value;
while (input[_i] != '=') {
int c = input[_i];
/* 0-9 */
if (c >= 48 && c <= 57) {
num *= 10; num += c - 48;
}
/* lowercase a-z */
if (c >= 97 && c <= 122) {
funcs[_j++] = (char)c;
}
_i++;
}
value = num;
for (_j = 0; funcs[_j] != '\0'; _j++) {
value = doMath(funcs[_j], value);
}
printf("Output: %li\n", value);
}
Now I need help to make the code more easy to understand and in c++ not c#. Can someone help me?
0 Answer(s)