Zadanie domowe rozdział 17 problem z pętlą do...while
Ostatnio zmodyfikowano 2014-10-05 20:51
dafuck17 Temat założony przez niniejszego użytkownika |
Zadanie domowe rozdział 17 problem z pętlą do...while » 2014-10-05 19:26:11 Treść zadania: Zmodyfikuj kalkulator, który pisałeś w jednym ze wcześniejszych rozdziałów tak, aby korzystał on ze wcześniej napisanej funkcji wczytajLiczbe. Mój kod: #include <iostream>
void funkcje() { using namespace std; cout << "Program ma nastepujace funkcje:" << endl; cout << "[1] Dodawanie " << endl; cout << "[2] Odejmowanie " << endl; cout << "[3] Mnozenie " << endl; cout << "[4] Dzielenie " << endl; cout << "[5] Rezygnuj " << endl; cout << "A teraz wprowadz 2 liczby potrzebne do wykonania dzialania..." << endl << endl; }
int wczytajLiczbe() { int liczba; do { std::cin.clear(); std::cin.sync(); std::cout << "Wprowadz pierwsza liczbe:" << std::endl; std::cin >> liczba; if( liczba == false ) std::cout << "Czy na pewno podales liczbe?" << std::endl; } while( !std::cin.good() ); return liczba; }
int wczytajdrugaliczbe() { int liczba; do { std::cin.clear(); std::cin.sync(); std::cout << "Wprowadz druga liczbe:" << std::endl; std::cin >> liczba; if( liczba == false ) std::cout << "Czy na pewno podales liczbe?" << std::endl; } while( !std::cin.good() ); return liczba; }
int wybierzdzialanie() { using namespace std; int liczba; do { cout << "[1] Dodawanie " << endl; cout << "[2] Odejmowanie " << endl; cout << "[3] Mnozenie " << endl; cout << "[4] Dzielenie " << endl; cout << "[5] Rezygnuj " << endl; std::cin.clear(); std::cin.sync(); std::cout << "Wybierz opcje od 1 do 5:" << std::endl; std::cin >> liczba; if( liczba == false ) std::cout << "Czy na pewno podales poprawna liczbe?" << std::endl; } while( !std::cin.good() || liczba < 1 || liczba > 5 ); return liczba; }
int main() { using namespace std; funkcje(); do { int liczba = wczytajLiczbe(); int liczba2 = wczytajdrugaliczbe(); int liczba3 = wybierzdzialanie(); switch( liczba3 ) { case 1: cout << "[1] Dodawanie " << liczba << " + " << liczba2 << " = " << liczba + liczba2 << endl; break; case 2: cout << "[2] Odejmowanie " << liczba << " - " << liczba2 << " = " << liczba - liczba2 << endl; break; case 3: cout << "[3] Mnozenie " << liczba << " * " << liczba2 << " = " << liczba * liczba2 << endl; break; case 4: cout << "[4] Dzielenie " << liczba << " / " << liczba2 << " = " << liczba / liczba2 << endl; break; case 5: cout << "[5] Rezygnuj " << " Zrezygnowales." << endl; break; } } while( liczba3 != 5 ); cout << "Zakonczyles program:)" << endl; return 0; }
Błąd pojawia się przy } while( liczba3 != 5 ); . Treść błędu: error: 'liczba3' was not declared in this scope Wiem że przełożenie zmiennej przed pętle naprawi problem, ale ja chcę mieć te zmienne w pętli więc co mam zrobic? :( |
|
stryku |
» 2014-10-05 19:51:42 No tego chyba raczej nie ominiesz skoro kompilator krzyczy. Czemu tak bardzo chcesz mieć je w pętli? Z resztą to trochę bez sensu co chcesz zrobić bo to tak jakbyś zrobił int main() { if( liczba == 2 ) { int liczba = } return 0; } |
|
Rashmistrz |
» 2014-10-05 20:09:22 Ja bym przeniósł przed pętlę i wstawił po switchu pobieranie liczb. int liczba = wczytajLiczbe(); int liczba2 = wczytajdrugaliczbe(); int liczba3 = wybierzdzialanie(); do { switch( liczba3 ) { } liczba = wczytajLiczbe(); liczba2 = wczytajdrugaliczbe(); liczba3 = wybierzdzialanie(); } while( liczba3 != 5 );
|
|
dafuck17 Temat założony przez niniejszego użytkownika |
» 2014-10-05 20:15:44 @stryku Miałem zamiar dać to do pętli, aby po zakończeniu jednego działania można było ponownie wybierać nowe liczby i robić nowe działania aż do klikniecia "[5] Rezygnuj " @rachmistrz Dzięki, uzyskałem to po chciałem ;) Ale teraz mam inny problem, bo gdy kończy się jedna pętla i zaczyna się druga (wpisuje nowe liczby i np inny nr działania) to niezależnie jakie bym liczby wpisał w drugiej pętli to i tak wynik oraz wybrany nr działania będzie taki sam jak w pętli pierwszej. Nie wiem czy dobrze wytłumaczyłem, więc macie screena: http://www.iv.pl/images/05258962886637431901.png |
|
Rashmistrz |
» 2014-10-05 20:51:19 Mój nick to Rashmistrz. ( https://translate.google.pl/#en/pl/rash) Podaj aktualny kod który Ci nie działa, bo u mnie co jest to działa dobrze: #include <iostream> void funkcje() { using namespace std; cout << "Program ma nastepujace funkcje:" << endl; cout << "[1] Dodawanie " << endl; cout << "[2] Odejmowanie " << endl; cout << "[3] Mnozenie " << endl; cout << "[4] Dzielenie " << endl; cout << "[5] Rezygnuj " << endl; cout << "A teraz wprowadz 2 liczby potrzebne do wykonania dzialania..." << endl << endl; } int wczytajLiczbe() { int liczba; do { std::cin.clear(); std::cin.sync(); std::cout << "Wprowadz pierwsza liczbe:" << std::endl; std::cin >> liczba; if( liczba == false ) std::cout << "Czy na pewno podales liczbe?" << std::endl; } while( !std::cin.good() ); return liczba; } int wczytajdrugaliczbe() { int liczba; do { std::cin.clear(); std::cin.sync(); std::cout << "Wprowadz druga liczbe:" << std::endl; std::cin >> liczba; if( liczba == false ) std::cout << "Czy na pewno podales liczbe?" << std::endl; } while( !std::cin.good() ); return liczba; } int wybierzdzialanie() { using namespace std; int liczba; do { cout << "[1] Dodawanie " << endl; cout << "[2] Odejmowanie " << endl; cout << "[3] Mnozenie " << endl; cout << "[4] Dzielenie " << endl; cout << "[5] Rezygnuj " << endl; std::cin.clear(); std::cin.sync(); std::cout << "Wybierz opcje od 1 do 5:" << std::endl; std::cin >> liczba; if( liczba == false ) std::cout << "Czy na pewno podales poprawna liczbe?" << std::endl; } while( !std::cin.good() || liczba < 1 || liczba > 5 ); return liczba; } int main() { using namespace std; funkcje(); int liczba = wczytajLiczbe(); int liczba2 = wczytajdrugaliczbe(); int liczba3 = wybierzdzialanie(); do { switch( liczba3 ) { case 1: cout << "[1] Dodawanie " << liczba << " + " << liczba2 << " = " << liczba + liczba2 << endl; break; case 2: cout << "[2] Odejmowanie " << liczba << " - " << liczba2 << " = " << liczba - liczba2 << endl; break; case 3: cout << "[3] Mnozenie " << liczba << " * " << liczba2 << " = " << liczba * liczba2 << endl; break; case 4: cout << "[4] Dzielenie " << liczba << " / " << liczba2 << " = " << liczba / liczba2 << endl; break; case 5: cout << "[5] Rezygnuj " << " Zrezygnowales." << endl; break; } liczba = wczytajLiczbe(); liczba2 = wczytajdrugaliczbe(); liczba3 = wybierzdzialanie(); } while( liczba3 != 5 ); cout << "Zakonczyles program:)" << endl; return 0; }
|
|
« 1 » |