Kalklulator konsolowy - ocena kodu i wskazówki

0

Witam czy mógłby ktoś zerknąć na ten program i dać jakieś wskazówki odnośnie kodu ? (Program z tego co przeglądałem działa poprawnie, lecz chciałbym się dowiedzieć jak wygląda kod)

#include <iostream>
using namespace std;
int main()
{    
    int liczba1,liczba2, wynik=0, numer;
    
    do{
    cout<<"[1] Dodawanie"<<endl;
    cout<<"[2] Odejmowanie"<<endl;
    cout<<"[3] Mnozenie"<<endl;
    cout<<"[4] Dzielenie"<<endl;
    cout<<"[5] Rezygnuj"<<endl;
    
    cin.clear();
    cin.sync();
    
    cout<<"\nPodaj pierwsza liczbe: ";
    
            if(cin>>liczba1&&liczba1!=0)
    {
            cout<<"Podaj druga liczbe: ";
        
            if(cin>>liczba2&&liczba2!=0)
    {
    
            cout<<"\nWybierz numer dzialania: ";
            cin>>numer;
            
            switch(numer)
            {
            case 1:
                cout<<"\t\t"<<liczba1<<"+"<<liczba2<<"= "<<liczba1+liczba2<<endl;
                break;

            case 2:
                cout<<"\t\t"<<liczba1<<"-"<<liczba2<<"= "<<liczba1-liczba2<<endl;
                break;

            case 3:
                cout<<"\t\t"<<liczba1<<"*"<<liczba2<<"= "<<liczba1*liczba2<<endl;
                break;

            case 4:
                cout<<"\t\t"<<liczba1<<"/"<<liczba2<<"= "<<liczba1/liczba2<<endl;
                cout<<"\t\t"<<"Reszta: "<<liczba1%liczba2<<endl;
                break;

            case 5:
                return 0;
                break;

            default:
                cout<<"Podane dane sa nieprawidlowe!\n"<<endl;
                break;
        }
            }
            
                } 
                    }while(liczba1!=10^5);
    
    system("pause");
    return 0;
}

Taka była treść zadania. Nie uwzględniałem tutaj tego założenia, że liczba powinna być różna

Napisz prosty kalkulator, który będzie potrafił dodawać, odejmować, mnożyć i dzielić. Program ten ma działać następująco:

  1. Wypisuje obecny wynik
  2. Wprowadź liczbę
  3. Wybierz działanie (jeżeli liczba różna od 0)
  4. Wykonaj obliczenia (jeżeli liczba różna od 0)
  5. Wróć do kroku 1.
  6. Jeżeli wprowadzoną liczbą jest 0, zakończ program.

zamiana znacznika <code class="c"> na <quote> - @furious programming

0

Były dziesiątki takich tematów na tym forum razem z przykładowymi kodami...

0

Tak, wiem dlatego nie pytam o działanie tylko chciałem zapytać o przejrzystość kodu i prawidłowość wprowadzonych pętli.

1
  1. Słabe formatowanie.
  2. DRY.
  3. Nieznajomość podstaw biblioteki standardowej (operator << i cout)
  4. Program ma wykonać się jak najszybciej. Program nie powinien interesować się wszelakimi pauzami.
0

Możesz trochę rozwinąć punkt 3 i 4 ?

1

(Uwaga! Post w budowie!)*
Poniżej zamieszczam kilka przykładów tego typu kalkulatora, przeanalizuj je.

  1. http://ideone.com/6hFteF
 #include <iostream>
#include <string>
#include <map>
#include <functional>
using namespace std;

double add(double a, double b){
	return a+b;
}
double subtract(double a, double b){
	return a-b;
}
double multiply(double a, double b){
	return a*b;
}
double divide(double a, double b){
	return a/b;
}

int main() {
	map<string, function<double(double, double)>> functions = {
		{"+", add},
		{"-", subtract},
		{"*", multiply},
		{"/", divide}
	};
	string inFuncName;
	double a, b;
	while(cin>>a>>inFuncName>>b)
		cout << a << inFuncName << b 
		<< " = " << functions[inFuncName](a, b) << endl;
	return 0;
}
  1. http://ideone.com/BaHtlK
#include <iostream>
#include <string>
#include <map>
#include <functional>
using namespace std;

int main() {
	map<string, function<double(double, double)>> functions = {
		{"+", [](double a, double b){return a+b;}},
		{"-", [](double a, double b){return a-b;}},
		{"*", [](double a, double b){return a*b;}},
		{"/", [](double a, double b){return a/b;}}
	};
	string inFuncName;
	double a, b;
	while(cin>>a>>inFuncName>>b)
		cout << a << inFuncName << b 
		<< " = " << functions[inFuncName](a, b) << endl;
	return 0;
}

*Aż taki ambitny nie jestem, a kolacja sama się nie zje.

0

Niestety jeszcze większości tych materiałów nie przerabiałem staram się robić na razie po kolei wszystko z kursu, ale na pewno do tego wrócę jak zapoznam się z tym materiałem. DZIĘKI !

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