zakończenie wpisywania danych

0

Witam,
więc treść programu do napisania to:
Napisz program, który działa jak prosty kalkulator obsługujący pięć operacji: dodawanie, odejmowanie, mnożenie, dzielenie i obliczanie reszty z dzielenia liczb całkowitych.

Wejście

Na wejście programu podana zostanie pewna liczba zestawów danych. Zestawy składają się z jednoznakowego symbolu operacji do wykonania (+ dodawanie, - odejmowanie, * mnożenie, / dzielenie całkowitoliczbowe, % reszta z dzielenia) oraz następujących po nim dwóch liczb całkowitych. Poszczególne składowe zestawu zostaną rozdzielone spacjami, a same zestawy znakiem nowej linii. Liczba testów nie przekracza 100, wynik zawiera się w typie int32.

Wyjście

Na wyjściu programu ma się pojawić ciąg liczb będących rezultatem wykonania pojawiających się na wejściu poleceń. Poszczególne liczby należy rozdzielić znakami nowej linii. Uwaga! Można założyć, że dane wejściowe nie zawierają polecenia dzielenia przez 0.

I moje pytanie to jak zakończyć wpisywanie danych?

mój kod:

 #include <cstdlib>
#include <iostream>
#include <string>
#include <sstream>
using namespace std;

int main(int argc, char *argv[])
{

     std::string  wyrazenie;
 
       

 int tab[10];
 char tab2[10];


 std::stringstream ss;
 std::    getline (std::cin, wyrazenie);
ss << wyrazenie;

int j;
char b;
j=0;
ss>>b;
tab2[j]=b;

int a;
int i=0;
       while (ss >> a)
        {	
			i++;
                tab[i] =a;
			
			}
	
int wynik;
char znak;
znak=tab2[0];


 switch(znak)
 {
           case '+':
                wynik=tab[1]+tab[2];
                break  ;
                
          case '*':
               wynik=tab[1]*tab[2];
                break  ;
                
           case '-':
               wynik=tab[1]-tab[2];
                
                break  ;
           case '/':
                wynik=tab[1]/tab[2];
                break  ;
           
           case '%':
                wynik=tab[1]%tab[2];
                break  ;
             }

     

cout<<wynik;


    
    system("PAUSE");
    return EXIT_SUCCESS;
}
0

Najprościej będzie utworzyć główną pętlę przetwarzającą kazdy zestaw danych w ten sposób:

while(getline(cin, linia))
{

}

Gdzie później przy użyciu chociażby stringstream'ów możesz z linii wypakowywać argumenty.

Akurat w tym programie użyłem jeszcze prostszego while(cin >> a >> b >> c), i też nie ma ku temu przeciwwskazań.

I tak na marginesie: jak już stosujesz using namespace std;, to nie pisz wszędzie std::, bo do tego to właśnie służy.
Ponadto nie powinno się używać system("pause"); lżejszym i przenośnym do tego rozwiązaniem jest np. cin.ignore().get().

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