założenie jest takie, że program ma obliczać wyrażenie podane przez użytkownika. Jednak jest pewne utrudnienie, w programie nie wolno używać pętli ani zmiennych globalnych i nie wiem jak to ominąć. Program liczy kolejność wprowadzania a nie kolejność wykonywania działań, np 2+2*2=8.
Napisz program, który pobierze od użytkownika wyrażenie arytmetyczne (nie dłuższe niż 200 znaków, składające się z liczb nieujemnych oraz operatorów arytmetycznych +, -, / i *)
, a następnie korzystając z przygotowanych wcześniej funkcji obliczy jego wartość i wypisze ją w konsoli z dokładnością dwóch miejsc po przecinku.
W przypadku błędnych danych wejściowych program powinien wyświetlić komunikat Incorrect input i zakończyć działanie z kodem błędu 1.
tak brzmi polecenie prosiłbym o pomoc w sprawie funkcji calculate jest jeszcze druga do zrobienia ale z tamtą powinienem sobie poradzić :)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int calculate(const char* expr, float *result);
int main()
{
char tab[201];
float wyn = 0;
int spr = 0;
printf("Podaj wyrazenie\n");
spr = scanf("%200s", tab);
calculate(tab, &wyn);
printf("%.2f", wyn);
return 0;
}
int calculate(const char* expr, float *result)
{
if (expr == NULL || result == NULL)
return 0;
char *znak = strpbrk(expr, "+-/*");
switch (*znak)
{
case '+':
{
*result += atoi(expr);
break;
}
case '-':
{
*result -= atoi(expr);
break;
}
case '/':
{
*result /= atoi(expr);
if(atoi(expr)==0)
{
printf("Dzielenie przez 0");
return 0;
}
break;
}
case '*':
{
*result *= atoi(expr);
break;
}
default:
printf("Nie ma takiego dzialnia");
}
return 1;
}