Skocz do zawartości

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

pk14

Kalkulator w c++ - co zmienić by program zadziałał

Polecane posty

Witam. Proszę o pomoc w tworzeniu programu kalkulator ,gdyż niezbyt mi on działa. Zamieszczę tutaj co już udało mi się zrobić i proszę napisać mi co mam zmienić żeby działała instrukcja switch.

#include <cstdlib>

#include <iostream>

#include <math.h>

using namespace std;

int main(int argc, char *argv[])

//int a, b, dod, ode, mno, dzi, pot;

{

cout<<"============================Kalkulator============================ \n"<<"\n";

cout<<"Podaj dzialania do wykonania \n"<<endl;

cout<<"1. Dodawanie"<<endl;

cout<<"2. Odejmowanie"<<endl;

cout<<"3. Mnozenie"<<endl;

cout<<"4. Dzielenie"<<endl;

cout<<"5. Potegowanie"<<endl;

int x;

//cin>>x:

cout<<"\n";

int a,b;

switch(x)

{

case 1:

cout<<"Podaj 1 liczbe: ";

cin>>a;

cout<<"Podaj 2 liczbe: ";

cin>>b;

cout<<"Wynik dodawania a+b= "<<a+b<<endl;

break;

case 2:

cout<<"Podaj 1 liczbe: ";

cin>>a;

cout<<"Podaj 2 liczbe: ";

cin>>b;

cout<<"Wynik odejmowania a-b= "<<a-b<<endl;

break;

case 3:

cout<<"Podaj 1 liczbe: ";

cin>>a;

cout<<"Podaj 2 liczbe: ";

cin>>b;

cout<<"Wynik mnozenia a*b= "<<a*b<<endl;

break;

case 4:

cout<<"Podaj 1 liczbe: ";

cin>>a;

cout<<"Podaj 2 liczbe: ";

cin>>b;

cout<<"Wynik dzielenia a/b= "<<a/b<<endl;

break;

case 5:

cout<<"Wynik potegowania a= "<<a<<endl;

break;

default:

cout<<"Oszukujesz! |n";

}

//cout<<"Wynik dodawania a+b= "<<a+b<<endl;

system("PAUSE");

return EXIT_SUCCESS;

}

Link do komentarza
Udostępnij na innych stronach

Dzięki. Rzeczywiście teraz działa ,a ten cin<<x dałem w komentarz bo na nim wywalało błąd. Nie zauważyłem tak : zamiast ; :smile:

Niżej gotowa wersja. Napiszesz mi jeszcze jak przerobić ten kalkulator na kalkulator z użyciem funkcji?

Prosiłbym jeszcze o kod programu jeżeli potęga ma wykładnik na - i jak po przejściu programu program się nie zamykał tylko czyścił ekran i wracał na początek.

#include <cstdlib>

#include <iostream>

#include <math.h>

using namespace std;

int main(int argc, char *argv[])

//int a, b, dod, ode, mno, dzi, pot;

{

cout<<"============================Kalkulator============================ \n"<<"\n";

cout<<"Podaj dzialania do wykonania \n"<<endl;

cout<<"1. Dodawanie"<<endl;

cout<<"2. Odejmowanie"<<endl;

cout<<"3. Mnozenie"<<endl;

cout<<"4. Dzielenie"<<endl;

cout<<"5. Potegowanie"<<endl;

int x;

cin>>x;

cout<<"\n";

int a,b;

switch(x)

{

case 1:

cout<<"Podaj 1 liczbe: ";

cin>>a;

cout<<"Podaj 2 liczbe: ";

cin>>b;

cout<<"Wynik dodawania a+b= "<<a+b<<endl;

break;

case 2:

cout<<"Podaj 1 liczbe: ";

cin>>a;

cout<<"Podaj 2 liczbe: ";

cin>>b;

cout<<"Wynik odejmowania a-b= "<<a-b<<endl;

break;

case 3:

cout<<"Podaj 1 liczbe: ";

cin>>a;

cout<<"Podaj 2 liczbe: ";

cin>>b;

cout<<"Wynik mnozenia a*b= "<<a*b<<endl;

break;

case 4:

cout<<"Podaj 1 liczbe: ";

cin>>a;

cout<<"Podaj 2 liczbe: ";

cin>>b;

cout<<"Wynik dzielenia a/b= "<<a/b<<endl;

break;

case 5:

cout<< "podaj podstawe potegi:"<<endl;

cin >> a;

cout<< "podaj wykladnik potegi:";

cin >> b;

double wynik = pow(a,b);

cout << "wynik to " <<wynik<<endl;

break;

//default:

// cout<<"Oszukujesz! \n";

}

//cout<<"Wynik dodawania a+b= "<<a+b<<endl;

system("PAUSE");

return EXIT_SUCCESS;

}

=========================================

Jak mam przerobić ten kawałek żeby przy dzieleniu przez 0 wyświetlało komunikat ,a w przeciwnym wypadku normalnie liczyło ,bo teraz robią się obie opcje?

case 4:

float z,x;

cout<<"Podaj 1 liczbe: ";

cin>>z;

cout<<"Podaj 2 liczbe: ";

cin>>x;

if (a || b == 0)

cout<<"Nie dziel przez 0 \n";

else continue;

cout<<"Wynik dzielenia a/b= "<<float(z/x)<<endl;

break;

Link do komentarza
Udostępnij na innych stronach

Czyszczenie ekranu:

widze, że używasz windows wiec robisz

system("cls");

Wracanie na początek:

do tego można użyć pętli lub rekurencji (przy czym petla jest o wiele logiczniejsza w tym wypadku)

po prostu cialo programu, czyli input itd. wrzucasz w pętlę while.

Podzielenie na funkcje:

zrob oddzielne funkcje odpowiadajace za dodawanie mnozenie dzielecnie itd.

funkcje będą przyjmowały 2 parametry: dwie liczby podane przez użytkownika np.:

int sumuj(int a,int b)
{
return a+b;
}
int main()
{
int a,b;
std::cin>>a>>b;
cout<<sumuj(a,b);
return 0;
}

co do dzielenia przez zero:

wywal "continue"

________________________________

EDIT:

swoją drogą, skoro jeteś początkujący to polecam nie używać STL-a i innych gotwych funkcji tylko samemu pisac - szybciej i wiecej sie nauczysz. (np potegowanie)

Link do komentarza
Udostępnij na innych stronach

Co musiałbym jeszcze dodać do tego kalkulatora z funkcjami ,aby po wpisaniu liter lub ciągu liter jako liczba a lub liczba b wypisywał jakiś komunikat np. błąd?

Poniżej gotowy program jednak ciągle wywala mi błąd obok 1 nawiasu klamrowego "{".

#include <cstdlib>

#include <iostream>

#include <math.h>

using namespace std;

double dodawanie(double a ,double b)

{

return a+b;

}

double odejmowanie(double a,double b)

{

return a-b;

}

double mnozenie(double a,double b)

{

return a*b;

}

double dzielenie(double a,double b)

{

return a/b;

}

double potegowanie(double a,double b)

{

return pow(a,b);

}

int main(int argc, char *argv[]){

bool wyjscie = false;

while(!wyjscie){

{

system ("chcp 1250");

int cykl12=0;

int cykl=0;

if (cykl == 0)

{

cout<<"============================Kalkulator============================ \n";

cout<<"Podaj dzialania do wykonania \n"<<endl;

cout<<"1. Dodawanie"<<endl;

cout<<"2. Odejmowanie"<<endl;

cout<<"3. Mnozenie"<<endl;

cout<<"4. Dzielenie"<<endl;

cout<<"5. Potegowanie"<<endl;

cout<<"0. Wyjscie"<<endl;

cykl++;

bool literka;

int zakres;

zakres = 0 || 1 || 2 || 3 || 4 || 5;

if (x>zakres)

{

literka==false

else

}

if (literka=false)

{

cout<<"Blad";

else

}

int x;

cin>>x;

system("cls");

cout<<"\n";

double a,b;

cout<<"Podaj 1 liczbę";

cin>>a;

cout<<"Podaj 2 liczbę";

cin>>b;

switch(x)

{

case 1:

cout<<"Wynik dodawania a+b= \n \n"<<dodawanie(a+b);

break;

case 2:

cout<<"Wynik odejmowania a-b= \n \n"<<odejmowanie(a-b);

system("pause");

system("cls");

break;

default:

cout<<"Nie ma takiej operacji"<<endl;

break;

case 3:

cout<<"Wynik mnozenia a*b= \n \n"<<mnozenie(a*b);

system("pause");

system("cls");

break;

case 4:

float z,x;

cout<<"Wynik dzielenia a/b= \n \n"<<dzielenie(a/b);

if (a || b == 0)

cout<<"Nie dziel przez 0 \n";

else

cout<<"Wynik dzielenia a/b= "<<dzielenie(z/x)<<endl;

cout<<"\n";

system("pause");

system("cls");

break;

case 0:

wyjscie = true;

break;

case 5:

cout<<"Wynik potegowania a= \n \n";

system("pause");

system("cls");

break;

}

}

if (cykl>0)

{

if (cykl12<10)

{

cykl12++;

main()

}

}

}

}

Link do komentarza
Udostępnij na innych stronach



  • Kto przegląda   0 użytkowników

    • Brak zalogowanych użytkowników przeglądających tę stronę.
×
×
  • Utwórz nowe...