Wątek przeniesiony 2021-05-27 00:25 z Java przez kq.

Prosty kalkulator w języku C

0

Chcę zrobić najprostszy w świecie kalkulator w języku C
Co tutaj jest nie tak????
nie ważne co wpiszę wyświetla mi blad

#include <stdio.h>
#include <math.h>

int main()
{
	int a, b, z;

	printf("Podaj a: ");
	scanf("%d", &a);

	printf("Podaj b: ");
	scanf("%d", &b);

	printf("Podaj znak dzialania: ");
	scanf("%d", &z);

switch(z){
case '+':
printf("= %d\n",a+b);
break;

case '-':
printf("= %d\n",a-b);
break;

case '*':
printf("= %d\n",a*b);
break;

case '/':
printf("= %d\n",a/b);
break;

default:
printf("blad\n");
}
return 0;
}
2

scanf("%d", &z);
To %d jakoś średnio tu pasuje. Podobnie jak typ zmiennej.

3
#include <stdio.h>

double add(double a,double b) { return a+b; }
double sub(double a,double b) { return a-b; }
double mul(double a,double b) { return a*b; }
double div(double a,double b) { return a/b; }

typedef double Fun(double a,double b);
static struct { char *op; Fun *fun; } tb[]=
{
	{'+',&add},
	{'-',&sub},
	{'*',&mul},
	{'/',&div},
};


int main()
{
	int i,ok;
	double a,b;
	char op;
	for(;;)
	{
		printf("Podaj wyrazenie (np 3+7): ");
		if(scanf("%lf %c %lf", &a,&op,&b)==3)
		{
			ok=0;
			for(i=0;i<sizeof(tb)/sizeof(*tb);++i)
			{
				if(tb[i].op==op)
				{
					printf("%lg %c %lg = %lg\n",a,op,b,tb[i].fun(a,b));
					ok=1;
					break;
				}
			}
			if(!ok) printf("Nieznana operacja\n");
		}
		else printf("Niepoprawie podane wyrażenie\n");
		while(getchar()!='\n') {}
	}
	return 0;
}
1
    int a, b;
    char z;

    printf("Podaj a: ");
    scanf("%d", &a);

    printf("Podaj b: ");
    scanf("%d", &b);

    printf("Podaj znak dzialania: ");
    scanf(" %c", &z);

Zmień początek na to.

0
#include <stdio.h>
#include <math.h>

int main()
{
	int a, b;
    char z;

    printf("Podaj a: ");
    scanf("%d", &a);

    printf("Podaj b: ");
    scanf("%d", &b);

    printf("Podaj znak dzialania: ");
    scanf(" %c", &z);

switch(z){
case '+':
printf("= %d\n",a+b);
break;

case '-':
printf("= %d\n",a-b);
break;

case '*':
printf("= %d\n",a*b);
break;

case '/':
printf("= %d\n",a/b);
break;

default:
printf("blad\n");
}
return 0;
}

Działa, dzięki za pomoc :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1