kłopot z programem prostego kalulatora

0

witam,
dopiero zaczynam swoja przygode z programowaniem.
dostałem do wykonania prosty kalulator oto treść zadania :
4. Napisz program, który działa jako prosty "drukujacy" kalkulator. Program powinien pozwalać uzytkownikowi na wprowadzanie wyrażeń w postaci
liczba operator

Ponizsze operatory powinny być rozpoznawane przez program:

  • -     *     /     S     E
    

Operator S poleca programowi ustawić “akumulator” dla wprowadzonej liczby. Operator E poleca programowi, że działanie ma się zakończyć. Operacje arytmetyczne są wykonywane na zawartości akumulatora z liczbą wprowadzoną jako drugim argumentem. Poniżej podano postać “przykładowego obliczenia” pokazującego jak program powinien działać:

Rozpocznij Obliczenia
10 S Ustaw akumulator na 10
= 10.000000 Zawartość akumulatora
2 / Podziel przez 2
= 5.000000 Zawartość akumulatora
55 - Odejmij 55
-50.000000
100.25 S Ustaw akumulator na 100.25
= 100.250000
4 * Pomnóż przez 4
= 401.000000
0 E Zakończ program
= 401.000000
Koniec Obliczeń.

program wykonałem, i działa w 90% dobrze, lecz chodzi o te 10% :)

 #include <stdio.h>

int main ()
{
float a, b;
char znak=0;
printf ("kalkulator\n\n");

while (znak!='E')
{
    printf("Wypisz");
    scanf("%f%c",&a,&znak);

        switch (znak)
        {

        case 'E':
            printf ("koniec programu, koniec obliczen");
            break;

        case 'S':

            b=a;
            printf ("ustawiono akumulator na %f \n =%f\n", b,b);
            break;


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

        case '-':

            b-=a;
            printf ("%f\n",b);
            break;

        case '*':

            b*=a;
            printf ("%f\n", b);
            break;

        case '/':
            if (a==0)
            {
                printf ("dzielnie przez 0\n");
            }
                else
            {
            b/=a;
            printf ("%f\n", b);
            break;
            }

        default:
            break;

        }
}
return 0;
}

chodzi o to, że działają mi funkcje dodawania, mnozenia, odejmowania, ale nie działa mi wyjście z programu. po wpisaniu np "10E" program znowu pokazuje "wypisz". siedzę nad tym od 3 godzin, i nie mogę znaleźć przyczyny. bardzo proszę o pomoc

2

Można zapisać liczbę zmiennoprzecinkową np jako: 1E5
Więc E jest znakiem specjalnym.
Sprawdź czy nie jest tak że wprowadzona liczba może być tylko int jeżeli nie to prostego rozwiązania nie będzie.

0

rzeczywiście po zmianie float na int, case 'E' zadziałał, nie mam jednak pojęcia dlaczego nie działało na float. dziękuje :)

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