Ĺadny brzuch
Mam taki problem: gdy program skończy swoje pierwsze obliczenie pyta się czy ma zakończyć swoje działanie.
Powinno być tak, że gdy nacisnę 0 program się zakończy, a przy naciśnięciu 1 nie zamknie się. Teraz jest tak, że niezależnie co nacisnę program i tak się zamknie. W czym jest problem?
Zamieszczam kod programu:
#include <conio> #include <iostream> //ZDEFINIOWANE DZIALANIA //FUNKCJA DODAWANIE float Dodawanie(float fLiczba1, float fLiczba2) { return fLiczba1 + fLiczba2; } //FUNKCJA ODEJMOWANIE float Odejmowanie(float fLiczba1, float fLiczba2) { return fLiczba1 - fLiczba2; } //FUNKCJA DZIELENIE float Dzielenie(float fLiczba1, float fLiczba2) { return fLiczba1 / fLiczba2; } //FUNKCJA MNOZENIE float Mnozenie(float fLiczba1, float fLiczba2) { return fLiczba1 * fLiczba2; } int main() { int nKoniec; //WYSWIETLA NAZWE PROGRAMU std::cout << "\n KALKULATOR" << std::endl; std::cout << "................................\n" << std::endl; do { //WYBIERANIE LICZB float fLiczba1; std::cout << "\nPodaj pierwsza liczbe: "; std::cin >> fLiczba1; float fLiczba2; std::cout << "Podaj druga liczbe: "; std::cin >> fLiczba2; //WYBIERAMY RODZAJ DZIALANIA (MENU) int nWybor; std::cout << "1. Dodawanie\n2. Odejmowanie\n3. Dzielenie\n4. Mnozenie\n0. Wyjscie" << std::endl; std::cout << "Wybrales: "; std::cin >> nWybor; std::cout << "\n" << std::endl; //WYBOR DZIALANIA switch (nWybor) { case 0: std::cout << "Dziekujemy :>" << std::endl; getch(); return 0; break; case 1: std::cout << fLiczba1 << " + " << fLiczba2 << " = " << Dodawanie(fLiczba1, fLiczba2) << std::endl; break; case 2: std::cout << fLiczba1 << " - " << fLiczba2 << " = " << Odejmowanie(fLiczba1, fLiczba2) << std::endl; break; case 3: if (fLiczba2 == 0.0) std::cout << "Dzielnik nie moze by zerem!" << std::endl; else std::cout << fLiczba1 << " / " << fLiczba2 << " = " << Dzielenie(fLiczba1, fLiczba2) << std::endl; break; case 4: std::cout << fLiczba1 << " * " << fLiczba2 << " = " << Mnozenie(fLiczba1, fLiczba2) << std::endl; break; default: std::cout << "Nieznana opcja!" << std::endl; } //MOZLIWOSC PONOWNEGO WYKONANIA DZIALANIA int nKoniec; std::cout << "\nCzy zamknac program?" << std::endl; std::cout << "\nJezeli tak nacisnij 0" << std::endl; std::cout << "Jesli nie nacisnij 1." << std::endl; std::cout << "Wybrales: "; std::cin >> nKoniec; } while (nKoniec == '0'); std::cout << "Dziekujemy :>" << std::endl; getch(); return 0; }
Proszę o pomoc
Użytkownik Red-Angel edytował ten post 11 kwiecień 2006, 22:36
int nKoniec masz 2 razy zdeklarowane. Wsumie nie ma to znaczenia bo mają inne zakresy, ale do warunku pętli do while używany jest ten nKoniec spoza pętli a on nie ma żadnej konkretnej wartości, bo wewnątrz wczytujesz znak do 2 zmiennej nKoniec. A kodwhile (nKoniec == '0');
Popraw nawhile(nKoniec!=0);PS sam się kiedyś myliłem warunkach, ale w wolnym tłumaczeniu masz: "Dopóki nKoniec różny od 0 powtarzaj..."
Użytkownik reVis edytował ten post 11 kwiecień 2006, 22:58
Nie kapuję co mam zrobić z int nKoniec. Mógłbyś mi to bardziej wyjaśnić?
Żartujesz czy naprawdę nie potrafisz czytać?
Napisał Ci dokładnie co masz zamienić na co przecież.
Chyba, że dopiero po edycji doszło dokładniejsze wyjaśnienie.
Użytkownik Chmurek edytował ten post 11 kwiecień 2006, 23:31
Teraz to widzę dzięki.
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Powinno być tak, że gdy nacisnę 0 program się zakończy, a przy naciśnięciu 1 nie zamknie się. Teraz jest tak, że niezależnie co nacisnę program i tak się zamknie. W czym jest problem?
Zamieszczam kod programu:
#include <conio> #include <iostream> //ZDEFINIOWANE DZIALANIA //FUNKCJA DODAWANIE float Dodawanie(float fLiczba1, float fLiczba2) { return fLiczba1 + fLiczba2; } //FUNKCJA ODEJMOWANIE float Odejmowanie(float fLiczba1, float fLiczba2) { return fLiczba1 - fLiczba2; } //FUNKCJA DZIELENIE float Dzielenie(float fLiczba1, float fLiczba2) { return fLiczba1 / fLiczba2; } //FUNKCJA MNOZENIE float Mnozenie(float fLiczba1, float fLiczba2) { return fLiczba1 * fLiczba2; } int main() { int nKoniec; //WYSWIETLA NAZWE PROGRAMU std::cout << "\n KALKULATOR" << std::endl; std::cout << "................................\n" << std::endl; do { //WYBIERANIE LICZB float fLiczba1; std::cout << "\nPodaj pierwsza liczbe: "; std::cin >> fLiczba1; float fLiczba2; std::cout << "Podaj druga liczbe: "; std::cin >> fLiczba2; //WYBIERAMY RODZAJ DZIALANIA (MENU) int nWybor; std::cout << "1. Dodawanie\n2. Odejmowanie\n3. Dzielenie\n4. Mnozenie\n0. Wyjscie" << std::endl; std::cout << "Wybrales: "; std::cin >> nWybor; std::cout << "\n" << std::endl; //WYBOR DZIALANIA switch (nWybor) { case 0: std::cout << "Dziekujemy :>" << std::endl; getch(); return 0; break; case 1: std::cout << fLiczba1 << " + " << fLiczba2 << " = " << Dodawanie(fLiczba1, fLiczba2) << std::endl; break; case 2: std::cout << fLiczba1 << " - " << fLiczba2 << " = " << Odejmowanie(fLiczba1, fLiczba2) << std::endl; break; case 3: if (fLiczba2 == 0.0) std::cout << "Dzielnik nie moze by zerem!" << std::endl; else std::cout << fLiczba1 << " / " << fLiczba2 << " = " << Dzielenie(fLiczba1, fLiczba2) << std::endl; break; case 4: std::cout << fLiczba1 << " * " << fLiczba2 << " = " << Mnozenie(fLiczba1, fLiczba2) << std::endl; break; default: std::cout << "Nieznana opcja!" << std::endl; } //MOZLIWOSC PONOWNEGO WYKONANIA DZIALANIA int nKoniec; std::cout << "\nCzy zamknac program?" << std::endl; std::cout << "\nJezeli tak nacisnij 0" << std::endl; std::cout << "Jesli nie nacisnij 1." << std::endl; std::cout << "Wybrales: "; std::cin >> nKoniec; } while (nKoniec == '0'); std::cout << "Dziekujemy :>" << std::endl; getch(); return 0; }
Proszę o pomoc
Użytkownik Red-Angel edytował ten post 11 kwiecień 2006, 22:36
int nKoniec masz 2 razy zdeklarowane. Wsumie nie ma to znaczenia bo mają inne zakresy, ale do warunku pętli do while używany jest ten nKoniec spoza pętli a on nie ma żadnej konkretnej wartości, bo wewnątrz wczytujesz znak do 2 zmiennej nKoniec. A kodwhile (nKoniec == '0');
Popraw nawhile(nKoniec!=0);PS sam się kiedyś myliłem warunkach, ale w wolnym tłumaczeniu masz: "Dopóki nKoniec różny od 0 powtarzaj..."
Użytkownik reVis edytował ten post 11 kwiecień 2006, 22:58
Nie kapuję co mam zrobić z int nKoniec. Mógłbyś mi to bardziej wyjaśnić?
Żartujesz czy naprawdę nie potrafisz czytać?
Napisał Ci dokładnie co masz zamienić na co przecież.
Chyba, że dopiero po edycji doszło dokładniejsze wyjaśnienie.
Użytkownik Chmurek edytował ten post 11 kwiecień 2006, 23:31
Teraz to widzę dzięki.