i'm programming beginner , need code. it's supposed calculator 6 functions including main. 4 operations , 1 take input 2 numbers. crashes enter second input number. also, had problem returning values function input()
main function perform operations. maybe has scanning opt?
#include <stdio.h> int add(int n1, int n2); int subtract(int n1, int n2); int multiply(int n1, int n2); int divide(int n1, int n2); void input(int *n1, int *n2); int main(void) { int n1, n2, ret; char opt; input(&n1, &n2); printf("addition -> 1\nsubtraction -> 2\nmultiplication -> 3\ndivision -> 4\nreset -> r\nexit -> e\n"); scanf("%c", &opt); switch(opt){ case '1': ret = add(n1, n2); printf("the sum %d\n", ret); break; case '2': ret = subtract(n1, n2); printf("the difference %d\n", ret); break; case '3': ret = multiply(n1, n2); printf("the sum %d\n", ret); break; case '4': ret = divide(n1, n2); printf("the sum %d\n", ret); break; } return 0; } void input(int *n1, int *n2) { int a, b; printf("enter first number: \n"); scanf("%d", &n1); printf("enter second number: \n"); scanf("%d", &n2); *n1 = a; *n2 = b; } add(n1, n2) { int result; result = (n1+n2); return result; } subtract(n1, n2) { int result; result = (n1-n2); return result; } divide(n1, n2) { int result; result = (n1/n2); return result; } multiply(n1, n2) { int result; result = (n1*n2); return result; }
am doing right?
the problem in input
:
printf("enter first number: \n"); scanf("%d", &n1); printf("enter second number: \n"); scanf("%d", &n2);
the %d
format specifier expects int *
argument. since n1
, n2
int *
, means &n1
, &n2
of type int **
. causes segmentation fault.
to fix this, pass in n1
, n2
:
void input(int *n1, int *n2) { printf("enter first number: \n"); scanf("%d", n1); printf("enter second number: \n"); scanf("%d", n2); getchar(); }
you'll notice a
, b
not required if this. note call getchar()
consume newline in input buffer. if don't that, newline picked scanf
in main
, switch statement won't entered.
also, 4 math functions don't specify return type. since prototypes these function declare them returning int
, , because int
default return type function, manages work. however, should specify return type.
Comments
Post a Comment