Kalkulator na zaliczenie- proszę pomóżcie [C]

0

Tak jak w temacie, niestety mój wykładowca laboratorium oszalał i co 5 min zmienia zasady zaliczenia o ile brakowało mi 1pkt, teraz brakuje mi 10.5, a mogę zdobyć tylko 10, muszę tylko napisać taki program a nie mam pojęcia jak za tak bardzo rozbudowany kalkulator się zabrać.
Kalkulator z kolejnością działań (do kilku np: 4 działań na wejściu). takie jest polecenie wykładowcy proszę jeżeli ktoś jest w stanie pomóc to będę bardzo szczęśliwy.
Pozdrawiam
/@ edit nie chcę gotowca umiem tylko prosty kalkulator na pentli swtich case czy też if else if

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

         int main ()
{
         double a,b,c;
         char dzialanie ;
          
         printf("Podaj a: ");
         scanf("%lf", &a);
         printf("Podaj b: ");
         scanf("%lf", &b);
         printf("Podaj dzialanie :  ");
         _flushall();
         scanf("%c", &dzialanie);
         if ((dzialanie !='+')&(dzialanie !='-')&(dzialanie!='*')&(dzialanie!='/'))
         {
         printf("Niewłaściwy znak\n");
         return -1;
         }
         if (dzialanie == '+')
         {        
         double c=a+b;
         printf("Suma = %.2lf\n",c);
         
         }
         else if ( dzialanie == '-')
         {
         double c=a-b;
         printf("Roznica = %.2lf\n", c);
         }
         else if (dzialanie == '*')
         {
         double c=a*b;
         printf("Iloczyn = %.2lf\n", c);
         }
        
         else if (dzialanie == '/', b >0)
         {
         double c=a/b;
         printf("Iloraz = %.2lf\n", c);
         }
          else ( b==0);
         {
         printf("Nie dziel przez zero\n");
         system("pause");
         return -1;
         }
         
         
         system ("pause");
         return 0

to jest mój program 2+2 a nie wiem zbytnio jak zabrać się za 2+2*3/4 ;(

/@ kolega mi sugeruje takie coś żeby wygenerować tablice string, i pentli for odczytywać wartości od początku do końca tablicy przy pomocy pentli if.

0

poczytaj o odwroconej notacji polskiej.

0

Dużo mi to nie da skoro muszę napisać coś czego nie potrafie

3

@Naky na tym polega nauka że się uczysz a potem robisz.

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

int main (int agrc(), void *agrv[])
{
    double a,b,c,d;
    double w,w1,w2;
    char dz,dz1,dz2;
    
    do
    {
        printf ("Podaj liczby i dzialania\n");
        scanf ("%lf", &a);
        printf ("");
        scanf("%c",&dz);
        printf ("");
        scanf ("%lf", &b);
        printf ("");
        scanf ("%c", &dz1);
        if (dz1=='=') break;
        printf ("");
        scanf ("%lf", &c);
        printf ("");
        scanf ("%c", & dz2);
        if (dz2 =='=') break;
        printf ("");
        scanf ("%lf", &d);
        }
        while (getchar());
        
        
        
         switch (dz)
        {
               case       '+': w=a+b;
               printf ("Wynik dzialania = %.4lf\n", w);
               break;
               case       '-': w=a-b;
               printf ("Wynik dzialania = %.4lf\n", w);
               break;
               case       '*': w=a*b;
               printf ("Wynik dzialania = %.4lf\n", w);
               break;
               case       '/': w=a/b;
               printf ("Wynik dzialania = %.4lf\n", w);
               break;
               
               }
        switch (dz1)
        {
               case '+': w1=w+c;
               printf("Wynik dzialania%.4lf\n", w1);
               break;
               case '-': w1=w-c;
               printf ("Wynik dzialania %.4lf\n", w1);
               break;
               case '*': w1=a dz(b*c);
               printf ("Wynik dzialania %.4fl\n",w1);
               break;
               
               }
        system ("pause");
        }

Dobra tak wygląda mój kod, piszę to tak jak potrafię i mam problem na samym dole chciałbym aby program czytał mi znak wprowadzonego działania "dz" jest działaniem 1 z poprzedniej pętli dobrze by było gdyby ktoś pomógł mi to skompilować bo mój dev nie godzi się na to
pozdrawiam

0

W switchu dz1, po wz1=a brakuje średnika, i próbujesz użyć zmiennej jako funkcji.
Wszystko było napisane w logach kompilacji :)

0

To rozumiem chodzi mi o to żeby tam wczytywał się znak wprowadzony w 1 działaniu.

0

To nie może być aż takie trudne a czas nagli :P

1

Pod windowsa.

#include <string>
#include <iostream>
#include <cstdlib>
#include <utility>
auto main(int argc, char **argv) -> int{
	const std::basic_string<char> cmdlexpr;
	std::getline(std::cin, const_cast<std::basic_string<char>&>(cmdlexpr));
	std::system(((std::basic_string<char>("set /a ")+*(&cmdlexpr)).c_str()));
	return !!!1+!!!2 == !!4;
}

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