Kalkulator podstawowy

0

Siemka. Zabieram się za napisanie troszkę "większego" kalkulatora. Potrzebuję tego na zaliczenie z języka C.
Proszę o wskazówki dotyczące kodu odpowiedzialnego za podstawowe funkcje. Wszystko działa jak należy, ale jakoś nie jestem zadowolony z tego rozwiązania.

Z góry wielkie dzięki za wszelką opinię i ew. pomoc :)

	case 1:
		
		
		printf("Pomiedzy liczbami uzywaj znakow '+', '-', '*' oraz '/', by wykonac odpowiednie dzialania. \nAby zakonczyc jako znak podaj '='. \n");
		wynik = 0;
		printf("Podaj liczbe: ");
		scanf("%f", &pomoc);															//Pobieranie pierwszej liczby, używana jest tylko raz (na początku)
	for (i=0;i>(-1);i++)
	{
		if (i!=0)
		printf("Aktualny wynik: %f\n", wynik);
		printf("Podaj znak: ");															//Pobieranie każdej kolejnej liczby
		scanf("%s", &znak);
		if (znak == '=')
		{
			printf("Wynik: %f\n", wynik); 
			break;
		}
		printf("Podaj liczbe: ");
		scanf("%f", &x);
/* DODAWANIE */
		if (znak == '+')	
		{
			if (i == 0)
			{
				wynik = ((pomoc) + (x));
			}
			else
			{	
				wynik += (x);
			}
		}
/*ODEJMOWANIE*/
		if (znak == '-')	
		{
			if (i == 0)
			{
				wynik = ((pomoc) - (x));
			}
			else
			{
				wynik -= (x);
			}
		}
/*MNOŻENIE*/
		if (znak == '*')	
		{
			if (i == 0)
			{
				wynik = ((pomoc) * (x));
			}
			else
			{
				wynik *= (x);
			}
		}
/*DZIELENIE*/
		if (znak == '/')	
		{
			if (i == 0)
			{
				wynik = ((pomoc) / (x));
			}
			else
			{
				wynik /= (x);
			}
		}
		
	}
	break; //case 1
3

Odwrotna notacja polska.

0

Człowiek ma tyle lat, a nigdy o tym nie słyszał. Wstyd się przyznać..
Będę kombinował :D

2

Zobacz na to:

#include <stdio.h>

int main()
  {
   char op;
   double a,b;
   for(;;)
     {
      printf("Podaj wyrażenie (np: 12*3, ! - koniec): ");
      if(scanf("%lf %c %lf",&a,&op,&b)==3)
        {
         if(op=='+') printf("%lf + %lf = %lf\n\n",a,b,a+b);
         else if(op=='-') printf("%lf - %lf = %lf\n\n",a,b,a-b);
         else if(op=='*') printf("%lf * %lf = %lf\n\n",a,b,a*b);
         else if(op=='/') printf("%lf / %lf = %lf\n\n",a,b,a/b);
        }
      else if(getchar()=='!') return 0;
      else 
        {
         printf("Niepoprawne wyrażenie\n\n");
         while(getchar()!='\n') {}
        }
     }
  }

http://ideone.com/U1iuUd
o wiele mniej kodu, o wiele wygodniejsze w użyciu.
Może poczytaj o ONP i spróbuj obsłużyć wyrażenia takie jak:
23+45
2*(3+4)*5
itp.

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