Prosty Kalkulator - problem.

0

Witajcie,

jest to mój początek jeżeli chodzi o programowanie i dostałem projekt do wykonania. Częścią projektu jest napisanie prostego kalkulatorka, w którym użytkownik wpisze ciąg maksymalnie 11 znaków, w czym maksymalnie jedna liczba 5 cyfrowa do tego znak "+", "-", "*" lub "/" i kolejną liczbę maksymalnie 5 znaków bez spacji miedzy nimi ani nic takiego

na przykłąd:

1+1
12*456
123-12
99999/99

Mam pytanie, właściwie to proszę o podpowiedź. W co ten ciąg znaków mogę wrzucić, do tablicy lub coś takiego? W jaki sposób mogę w tej tablicy znaleźć znak działania i oddzielić te liczby od siebie?

2

Skorzystaj ze stosu i odwróconej notacji polskiej.

0

http://cpp0x.pl/artykuly/?id=46

wystarczy użyc googli pod hasłem
"parser wyrażeń matematycznych"

1

@Gjorni, @fasadin - po kiego straszycie początkującego? Przeczytaliście jakie są wymagania dotyczące tych wyrażeń?

#include <iostream>
using namespace std;

int main()
  {
   while(true)
     {
      cout<<"Podaj operacje: ";
      double a,b;
      char op;
      if((cin>>a>>op>>b)&&((op=='+')||(op=='-')||(op=='*')||(op=='/')))
        {
         switch(op)
           {
            case '+': cout<<a<<' '<<op<<' '<<b<<" = "<<(a+b)<<endl; break;
            case '-': cout<<a<<' '<<op<<' '<<b<<" = "<<(a-b)<<endl; break;
            case '*': cout<<a<<' '<<op<<' '<<b<<" = "<<(a*b)<<endl; break;
            case '/': if(b) cout<<a<<' '<<op<<' '<<b<<" = "<<(a/b)<<endl; 
                      else cout<<"cholera nie dziel przez zero"<<endl; break;
           }
        }
      else
        {
         cin.clear();
         cout<<"blad wprowadzeia"<<endl;   
        }
      while(cin.get()!='\n') {}
     }
  }
0

wczytaj to do stringa. np "12345+56789"

  1. sprawdz czy len nie jest większy od 11 jeżeli jest to pokaż że wprowadzony tekst za długi
  2. szukaj końca liczby (tutaj bedzie na 5 indeksie) i wczytaj to do zmiennej (int,float)
  3. poszukaj operatora (nastepny znak) wczytaj to do zmiennej (np char)
  4. wczytaj od znaku do końca striga (len) i wczytaj do zmiennej (int float)

pozniej prosty switch

pamietaj że musisz się przy tym zabepizeczyć przed czymś takim

1234d5141
1fdt2rf54
-345
343+
234234423+1

itd.

0

Dzięki wielkie za pomoc Fasadin i 13th_Dragon. Zrobiłem, zaliczyłem 4,5 dało. Semestr zaliczony ;) .

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