Biorę pod uwagę to że zaczynasz.
Ogromny plus i pochwała. Jeden z niewielu programów początkujących który nie używa zmiennych globalnych!!! Bardzo dobrze i tak trzymaj!! :)
1. Unikaj nawet w tak małych programach na początku nauki używania:
using namespace std;
To ogólnie zły nawyk który może się zemścić w większych projektach. Wiem że to może być uciążliwe, ale lepiej jest zapisać np. std::cout niż cout.
2. Zły nawyk definiowania w jednej linii zmiennych. Zamiast pisać:
double a, b, zmienna,wynik;
(BTW zmienna wynik nie używana w programie).
lepiej pisać:
double a;
double b;
double zmienna;
double wynik;
Na zarzut że "bo to dużo linii jest", odpowiedź prosta. Jeśli nauczysz się funkcji, zmiennych nie będzie dużo a ilość zmiennych jest sygnałem że funkcja za wiele rzeczy robi.
3. Ogromny plus za świadomość że zmienne nie są zerowane. Lepiej więc zapisać:
double zmienna = 0;
// lub..
double inna_zmienna();
// lub ...
double inna_zmienna{};
// lub po 2011 roku dla C++11
auto jeszcze_inna_zmienna = 0U;
3. Nie nadużywaj std::endl. Wystarczy '\n'. std::endl, wyprowadza znak nowej linii i czyści strumień. Lepiej:
std::cout << "Witamy w kalkulatorze!\n\n"
<< "Wprowadz pierwsza liczbe: ";
Już po (wstępnym) formatowaniu kodu widać miejsce do poprawek... logiki nie sprawdzałem:
#include <iostream>
int main()
{
double a = 0;
double b = 0;
double zmienna = 0;
int c = 0;
std::cout << "Witamy w kalkulatorze!\n\n"
<< "Wprowadz pierwsza liczbe: ";
std::cin >> a;
std::cout << "Co dalej?\n";
do
{
if(c == 6)
{
std::cout << "\n\nWprowadz pierwsza liczbe: ";
std::cin >> a;
std::cout << "Co dalej?\n";
c = 9;
}
if(b != 0)
{
std::cout << "\n\nAktualny wynik to... " << b
<< "\nCo dalej?\n";
}
if(c != 6)
{
std::cout << " [1] Dodawanie\n"
<< " [2] Odejmowanie\n"
<< " [3] Mnozenie\n"
<< " [4] dzielenie\n"
<< " [5] Reset\n"
<< " [0] Koniec\n";
std::cin >> c;
switch(c)
{
case 1:
std::cout << "\nDo jakiej liczby chcesz dodac ";
if (a != 0)
{
std::cout << a;
}
else
{
std::cout << b;
}
std::cout << "\nPodaj druga liczbe ";
std::cin >> zmienna;
if (b != 0)
{
std::cout << "Wynik dzialania "
<< b << " + " << zmienna
<< " = " << b + zmienna;
b += zmienna;
}
if (a != 0)
{
std::cout << "Wynik dzialania "
<< a << " + " << zmienna
<< " = " << a + zmienna;
b = a + zmienna;
a = 0;
}
break;
case 2:
std::cout << "\nOd jakiej liczby chcesz odjac? ";
if(a != 0) {
std::cout << a;
}
else
{
std::cout << b;
}
std::cout << "\nPodaj druga liczbe ";
std::cin >> zmienna;
if(b != 0)
{
std::cout << "Wynik dzialania " << b
<< " - " << zmienna << " = " << b - zmienna;
b -= zmienna;
}
if(a != 0)
{
std::cout << "Wynik dzialania " << a
<< " - " << zmienna << " = "
<< a - zmienna;
b = a - zmienna;
a = 0;
}
break;
case 3:
std::cout << "\nPrzec co chcesz pomnozyc? ";
if(a != 0) {
std::cout << a;
}
else
{
std::cout << b;
}
std::cout << "\nPodaj druga liczbe ";
std::cin >> zmienna;
if(b != 0)
{
std::cout << "Wynik dzialania " << b
<< " * " << zmienna << " = "
<< b * zmienna;
b *= zmienna;
}
if(a != 0)
{
std::cout << "Wynik dzialania "<< a
<< " * " << zmienna << " = "
<< a * zmienna;
b = a * zmienna;
a = 0;
}
break;
case 4:
std::cout << "\nPrzec co chcesz podzielic? ";
if(a != 0) {
std::cout << a;
}
else
{
std::cout << b;
}
std::cout << "\nPodaj druga liczbe ";
std::cin >> zmienna;
if(b != 0)
{
std::cout << "Wynik dzialania " << b
<< " / " << zmienna << " = "
<< b / zmienna;
b /= zmienna;
}
if(a != 0)
{
std::cout << "Wynik dzialania " << a
<< " / " << zmienna << " = "
<< a / zmienna;
b = a / zmienna;
a = 0;
}
break;
case 5:
std::cout << "\nReset wyniku";
b = 0;
c = 6;
break;
}
}
if (!std::cin || (c < 0) || (c > 6) )
{
std::cin.clear();
std::cin.ignore(1000, '\n');
std::cout << "\nWprowadziles bledny znak :(\n";
c = 6;
}
} while(c != 0);
}