Witam
Miałem za zadanie stworzyć kalkulator obiektowy w C++. Stworzyłem coś takiego:
#include <iostream>
#include <math.h>
#include<cstdlib>
using namespace std;
class kalkulator
{
float a, b;
public:
void wynik()
{
cout << "podaj 2 liczby: \n";
cout << "a = ";
cin >> a;
cout << "b = ";
cin >> b;
}
void wynikp()
{
cout << "podaj 1 liczbe: ";
cin >> a;
}
float dodawanie()
{
return a + b;
}
float odejmowanie()
{
return a - b;
}
float mnozenie()
{
return a * b;
}
float dzielenie()
{
if (b == 0)
{
cout << "!!!!NIE WOLNO DZIELIC PRZEZ ZERO!!!!" <<
endl;
return 0;
}
else
{
return a / b;
}
}
int modulo()
{
if (b == 0)
{
cout << "!!!!NIE WOLNO DZIELIC PRZEZ ZERO!!!!" <<
endl;
return 0;
}
else
{
cout << "reszta z dzielenia to ";
return (int)roundf(a) % (int)roundf(b);
}
}
float pierwiastek()
{
if (a < 0){
cout << "nie mozna pierwiastkowac liczb ujemnych";
}
else {
return sqrt(a);
}
}
};
int main()
{
int x;
char wybor;
kalkulator c;
cout << "Opcje do wyboru \n" <<
"1 - dodac\n" <<
"2 - odjac\n" <<
"3 - pomnozyc\n" <<
"4 - podzielic \n" <<
"5 - podac resztę z dzielenia\n" <<
"6 - podac pierwiastek kwadratowy\n"<<
"C - CZYSZCZENIE PROGRAMU\n"<<
"E - WYJSCIE Z PROGRAMU\n";
do {
cout << "Prosze zaznaczyc, co kalkulator ma zrobic z podanymi liczbami: \n";
cin >> x;
while (x <= 0 || x > 6)
{
cout << "Prosze wpisac poprawne dzialanie \n";
cin >> x;
}
switch (x)
{
case 1:
c.wynik();
cout << "wynik: " <<
c.dodawanie() << endl;
break;
case 2:
c.wynik();
cout << "wynik: " <<
c.odejmowanie() << endl;
break;
case 3:
c.wynik();
cout << "wynik: " <<
c.mnozenie() << endl;
break;
case 4:
c.wynik();
cout << "wynik: " <<
c.dzielenie() << endl;
break;
case 5:
c.wynik();
cout << "wynik: " <<
c.modulo() << endl;
break;
case 6:
c.wynikp();
cout << "wynik: " <<
c.pierwiastek() << endl;
break;
default:
cout << "\n";
}
cout << "\nChcesz kontunuowac? \n C - czyszczenie pamieci i kolejne dzialanie \n E - wyjscie \n ";
cin >> wybor;
if (wybor == 'E' || wybor == 'e')
{
return 0;
}
} while (wybor == 'C' || wybor == 'c');
return 0;
}
Problem zaczyna się w momencie, kiedy chcę zacząć dalszą część zadania, czyli:
Utwórz rozszerzenie kalkulatora prostego, tak aby działał w następujący sposób:
a) Można zmienić znak działania zastępując go innym.
b) Można zmienić liczbę w działaniu zastępując ją inną.
c) należy dopisać implementację obsługi pamięci (M+, M- itd. sufixowane działaniem, aby wykonać operację na pamięci (wykonuje się względem aktualnego wyniku)
d) MC - czyszczenie pamięci MR - przywołanie wyniku z pamięci.
Czy byłby ktoś w stanie pomóc w tym zadaniu? Wiem, że należałoby użyć stringów i przetwarzać łańcuch znaków na liczbę, jednak nie zabardzo wiem jak się za to zabrać.