Kalkulator - argumenty w jednej linii

0

Mam taki prosty kalkulator, działa on w ten sposób, że wpisuje wpierw komendę - "kalkulator dodaj" i dopiero potem mogę wpisać "liczbę A", a potem "liczbę B". Jak w prosty sposób mógłbym sprawić, żeby wszystkie argumenty były od razu w jednej linii, przykład - "kalkulator dodaj 5 3" ?

 class kalkulator{
	
	public:
    void w_kalkulator(string argument){
	if(argument == "dodaj"){
		int a, b, c;
		cout<<"Podaj liczbe A:"<<endl;
		cin>>a;
		cout<<"Podaj liczbe B:"<<endl;
		cin>>b;
		c = a+b;
		cout<<"Wynik to: "<<c;
	}
	
	if(argument == "odejmij"){
		int a, b, c;
		cout<<"Podaj liczbe A:"<<endl;
		cin>>a;
		cout<<"Podaj liczbe B:"<<endl;
		cin>>b;
		c = a-b;
		cout<<"Wynik to: "<<c;
	}

	if(argument == "mnoz"){
		int a, b, c;
		cout<<"Podaj liczbe A"<<endl;
		cin>>a;
		cout<<"Podaj liczbe B"<<endl;
		cin>>b;
		c = a*b;
		cout<<"Wynik to: "<<c;
	}

	if(argument == "dziel"){
		float a, b, c;
		cout<<"Podaj liczbe A"<<endl;
		cin>>a;
		cout<<"Podaj liczbe B"<<endl;
		cin>>b;
		c = a/b;
		cout<<"Wynik to: "<<c;
		}
	}
};
1

Musisz sobie parsować wejście np. jakimś wyrażeniem regularnym. Albo wczytak zwyczajnie 5+3 a potem sparsuj wyrażenie artymetyczne.

0
Shalom napisał(a):

Musisz sobie parsować wejście np. jakimś wyrażeniem regularnym. Albo wczytak zwyczajnie 5+3 a potem sparsuj wyrażenie artymetyczne.

 class kalkulator{
	
	public:
    void w_kalkulator(string argument, int liczba1, int liczba2){
	if(argument == "dodaj"){
		int a, b, c;
		liczba1 = a;
		liczba2 = b;
		c = a+b;
		cout<<"Wynik to: "<<c;
	}
	
	if(argument == "odejmij"){
		int a, b, c;
		liczba1 = a;
		liczba2 = b;
		c = a-b;
		cout<<"Wynik to: "<<c;
	}

	if(argument == "mnoz"){
		int a, b, c;
		liczba1 = a;
		liczba2 = b;
		c = a*b;
		cout<<"Wynik to: "<<c;
	}

	if(argument == "dziel"){
		float a, b, c;
		liczba1 = a;
		liczba2 = b;
		c = a/b;
		cout<<"Wynik to: "<<c;
		}
	}
};

class komend{
	private:
    kalkulator komend;
    
  public:
    void wykonaj_komende(string komenda, string argument, int liczba1, int liczba2){
      if(komenda == "kalkulator"){
	komend.w_kalkulator(argument, liczba1, liczba2);
      }
  }
};

int main(int argc, char ** argv){
  
  string komenda = "", argument = "";
  int liczba1 = 0, liczba2 = 0;
  
  komendy podaj;
  
  while(true){
    
    cin>> komenda >> argument;
    
    podaj.wykonaj_komende(komenda, argument, liczba1, liczba2);
    
  }
  
  return 0;
}

Zrobiłem coś takiego, ale w ogóle nie działa. Inne komendy zrobione są w ten sposób i działają, tyle że mają jeden argument, tutaj dodałem liczba1 i liczba 2. Jak mam to zrobić, żeby działało?

EDIT: Widzę że problem jest przy podawaniu argumentów, ale kiedy dodam tutaj "cin>> komenda >> argument;" liczba1 i liczba2, to wszystkie inne komendy przestają działać.

1

I rozumiem ze wg ciebie nie warto pokazać jak parsujesz te komendy i jak wydzielasz z nich parametry? Anyway, robisz to teraz zwyczajnie źle taką ifologią ;]

0
Shalom napisał(a):

I rozumiem ze wg ciebie nie warto pokazać jak parsujesz te komendy i jak wydzielasz z nich parametry? Anyway, robisz to teraz zwyczajnie źle taką ifologią ;]

Eh, sorka, jestem mocno przeziębiony i ledwo udaje mi się zebrać myśli...
Dodałem do poprzedniego postu.

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