Cześć,
Stworzyłem kalkulator z zadania:
"
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.
" Trochę dodałem od siebie np. spr. czy to liczba itp.
Robiąc wszystko samemu, nie wiem jak można wykonać zadania inaczej/ czytelniej, dlatego chciałem to skonsultować tutaj. Proszę o wszelkie opinie, a jak by komuś się chciało zrobić zadanie inaczej to byłbym wdzięczny.
#include <iostream>
#include <conio.h>
#include <cstdlib>
#include <stdio.h>
using namespace std;
int main()
{
int wybor, dzialac_dalej;
do{
cout<<"MENU GLOWNE\n";
cout<<"-----------------\n";
cout<<"[1]Dodawanie\n";
cout<<"[2]Odejmowanie\n";
cout<<"[3]Mnozenie\n";
cout<<"[4]Dzielenie\n";
cout<<"[5]Wyjscie\n";
cout<<"NALEZY PODAC LICZBY INNE NIZ 0\n\n";
wybor=getch();
switch(wybor){
case '1':{
int liczba[3],wynik;
bool stan_liczba[3];
do{
cout<<"Dodawanie\n";
cout<<"Podaj 1 liczbe: ";
cin.clear();
cin.sync();
cin>>liczba[0];
stan_liczba[0]=cin.good();
cout<<"Podaj 2 liczbe: ";
cin.clear();
cin.sync();
cin>>liczba[1];
stan_liczba[1]=cin.good();
cout<<"Podaj 3 liczbe: ";
cin.clear();
cin.sync();
cin>>liczba[2];
stan_liczba[2]=cin.good();
if((stan_liczba[0]==1)&&(stan_liczba[1]==1)&&(stan_liczba[2]==1)&&(liczba[0]!=0)&&(liczba[1]!=0)&&(liczba[2]!=0)){
wynik=liczba[0]+liczba[1]+liczba[2];
cout<<"Wynik: "<<wynik<<endl;
cout<<"Czy wrocic do menu glownego?\n";
cout<<"[1]Tak\n";
cout<<"[2]Nie/ Opusc program\n";
cin>>dzialac_dalej;
if(dzialac_dalej==1){
system("cls");
break;
}
else
exit(0);
}
else{
system("cls");
cout<<"Wprowadziles zle dane!\n";
cout<<"NALEZY PODAC LICZBY INNE NIZ 0\n\n";
stan_liczba[0]=false; // dlatego to dodalem bo w while(..) musial bym
stan_liczba[1]=false; // dodac dodatkowe argumenty dla liczba[i]==0
stan_liczba[2]=false;
}
}while((stan_liczba[0]==false)||(stan_liczba[1]==false)||(stan_liczba[2]==false));
break;
}
case '2':{
int liczba[2], wynik;
bool stan_liczba[2];
do{
cout<<"Odejmowanie\n";
cout<<"Podaj 1 liczbe: ";
cin.clear();
cin.sync();
cin>>liczba[0];
stan_liczba[0]=cin.good();
cout<<"Podaj 2 liczbe: ";
cin.clear();
cin.sync();
cin>>liczba[1];
stan_liczba[1]=cin.good();
if((stan_liczba[0]==1)&&(stan_liczba[1]==1)&&(liczba[0]!=0)&&(liczba[1]!=0)){
wynik=liczba[0]-liczba[1];
cout<<"Wynik: "<<wynik<<endl;
cout<<"Czy wrocic do menu glownego?\n";
cout<<"[1]Tak\n";
cout<<"[2]Nie/ Opusc program\n";
cin>>dzialac_dalej;
if(dzialac_dalej==1){
system("cls");
break;
}
else
exit(0);
}
else{
system("cls");
cout<<"Wprowadziles zle dane!\n";
cout<<"NALEZY PODAC LICZBY INNE NIZ 0\n\n";
stan_liczba[0]=false;
stan_liczba[1]=false;
}
}while((stan_liczba[0]==false)||(stan_liczba[1]==false));
break;
}
case '3':{
int liczba[3], wynik;
bool stan_liczba[3];
do{
cout<<"Podaj 1 liczbe: ";
cin.clear();
cin.sync();
cin>>liczba[0];
stan_liczba[0]=cin.good();
cout<<"Podaj 2 liczbe: ";
cin.clear();
cin.sync();
cin>>liczba[1];
stan_liczba[1]=cin.good();
cout<<"Podaj 3 liczbe: ";
cin.clear();
cin.sync();
cin>>liczba[2];
stan_liczba[2]=cin.good();
if((stan_liczba[0]==1)&&(stan_liczba[1]==1)&&(stan_liczba[2]==1)&&(liczba[0]!=0)&&(liczba[1]!=0)&&(liczba[2]!=0)){
wynik=liczba[0]*liczba[1]*liczba[2];
cout<<"Wynik: "<<wynik<<endl;
cout<<"Czy wrocic do menu glownego?\n";
cout<<"[1]Tak\n";
cout<<"[2]Nie/ Opusc program\n";
cin>>dzialac_dalej;
if(dzialac_dalej==1){
system("cls");
break;
}
else
exit(0);
}
else{
system("cls");
cout<<"Wprowadziles zle dane!\n";
cout<<"NALEZY PODAC LICZBY INNE NIZ 0\n\n";
stan_liczba[0]=false;
stan_liczba[1]=false;
stan_liczba[2]=false;
}
}while((stan_liczba[0]==false)||(stan_liczba[1]==false)||(stan_liczba[2]==false));
break;
}
case '4':{
int liczba[3], wynik;
bool stan_liczba[2];
do{
cout<<"Podaj 1 liczbe: ";
cin.clear();
cin.sync();
cin>>liczba[0];
stan_liczba[0]=cin.good();
cout<<"Podaj 2 liczbe: ";
cin.clear();
cin.sync();
cin>>liczba[1];
stan_liczba[1]=cin.good();
if((stan_liczba[0]==1)&&(stan_liczba[1]=1)&&(liczba[0]!=0)&&(liczba[1]!=0)){
wynik=liczba[0]/liczba[1];
cout<<"Wynik: "<<wynik<<endl;
cout<<"Czy wrocic do menu glownego?\n";
cout<<"[1]Tak\n";
cout<<"[2]Nie/ Opusc program\n";
cin>>dzialac_dalej;
if(dzialac_dalej==1){
system("cls");
break;
}
else
exit(0);
}
else{
system("cls");
cout<<"Wprowadziles zle dane!\n";
cout<<"NALEZY PODAC LICZBY INNE NIZ 0\n\n";
stan_liczba[0]=false;
stan_liczba[1]=false;
stan_liczba[2]=false;
}
}while((stan_liczba[0]==false)||(stan_liczba[1]==false));
break;
}
case '5':
exit(0);
default:{
system("cls");
cout<<"Wybrano z poza zakresu!\n\n";
dzialac_dalej=1;
}
}
}while(dzialac_dalej==1);
getchar();getchar();
return 0;
}
Z góry dzięki za przeanalizowanie kodu, wypisanie swojego itp.
Pozdrawiam,
Hinzeq
EDIT:
Proszę jeszcze o alternatywę dla <conio.h>, lepiej chyba by było multiplatformowe tak?