-
Notifications
You must be signed in to change notification settings - Fork 0
/
calc_client.c
130 lines (110 loc) · 3.32 KB
/
calc_client.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/*
* This is sample code generated by rpcgen.
* These are only templates and you can use them
* as a guideline for developing your own functions.
*/
#include "calc.h"
void
calculator_1(char *host)
{
CLIENT *clnt;
double *result_1;
my_numbers addition_1_arg;
double *result_2;
my_numbers subtraction_1_arg;
double *result_3;
my_numbers multiplication_1_arg;
double *result_4;
my_numbers division_1_arg;
double val1,val2,val3, val4 ;
double val5,val6,val7, val8 ;
#ifndef DEBUG
clnt = clnt_create (host, CALCULATOR, CALC, "udp");
if (clnt == NULL) {
clnt_pcreateerror (host);
exit (1);
}
#endif /* DEBUG */
char choice;
printf("Please select a choice for the operation you want.\n");
printf("A: Addition\n");
printf("B: Subtraction\n");
printf("C: Multiplication\n");
printf("D: Division\n");
scanf("%c", &choice);
switch(choice) {
case 'A':
printf("Enter 2 digits to add\n");
printf("Value 1: ");
scanf("%lf", &val1);
printf("Value 2: ");
scanf("%lf", &val2);
addition_1_arg.a = val1;
addition_1_arg.b = val2;
result_1 = addition_1(&addition_1_arg, clnt);
if (result_1 == (double *) NULL) {
clnt_perror (clnt, "call failed");
}
printf("Result of addition is %lf:", *result_1);
break;
case 'B':
printf("Enter 2 digits to subtract\n");
printf("Value 1: ");
scanf("%lf", &val3);
printf("Value 2: ");
scanf("%lf", &val4);
subtraction_1_arg.a = val3;
subtraction_1_arg.b = val4;
result_2 = subtraction_1(&subtraction_1_arg, clnt);
if (result_2 == (double *) NULL) {
clnt_perror (clnt, "call failed\n");
}
printf("Result of subtraction is %lf:\n", *result_2);
break;
case 'C':
printf("Enter 2 digits to multiply\n");
printf("Value 1: ");
scanf("%lf", &val5);
printf("Value 2: ");
scanf("%lf", &val6);
multiplication_1_arg.a = val5;
multiplication_1_arg.b = val6;
result_3 = multiplication_1(&multiplication_1_arg, clnt);
if (result_3 == (double *) NULL) {
clnt_perror (clnt, "call failed\n");
}
printf("Result of multiplication is %lf:\n", *result_3);
break;
case 'D':
printf("Enter 2 digits to multiply\n");
printf("Value 1: ");
scanf("%lf", &val7);
printf("Value 2: ");
scanf("%lf", &val8);
division_1_arg.a = val7;
division_1_arg.b = val8;
result_4 = division_1(&division_1_arg, clnt);
if (result_4 == (double *) NULL) {
clnt_perror (clnt, "call failed");
}
printf("Result of division is %lf:\n", *result_4);
break;
default:
printf("Please select a valid choice.\n");
}
#ifndef DEBUG
clnt_destroy (clnt);
#endif /* DEBUG */
}
int
main (int argc, char *argv[])
{
char *host;
if (argc < 2) {
printf ("usage: %s server_host\n", argv[0]);
exit (1);
}
host = argv[1];
calculator_1 (host);
exit (0);
}