Dziwne coś przy programie z funkcjami
Ostatnio zmodyfikowano 2012-12-23 18:04
silentus Temat założony przez niniejszego użytkownika |
Dziwne coś przy programie z funkcjami » 2012-12-23 17:48:37 Witam, Ogarniam już lekko podstawy c++ bo kiedyś też się uczyłem, ale teraz zrobię cały kurs. Zrobiłem kompletnie sam zadanie z funkcjami, miałem kilka błędów ale po głębszym wpatrzeniu się w kod je odnalazłem (np zamiast case 2: dawałem case 2;) Wszystko działa itd tyle że jest pewien problem, gdy włączam program dostępne funkcje pokazują mi się dwa razy, screen: Kod programu : #include <iostream> #include <windows.h> using namespace std; void funkcje() { cout << "[1] - Dodawanie" << endl; cout << "[2] - Odejmowanie" << endl; cout << "[3] - Wyjscie" << endl; }
void dodawanie() { cout << "DODAWANIE" << endl; cout << "Podaj liczbe nr 1 "; int liczba1; int liczba2; cin >> liczba1; cout << "Ok, liczba 1 to " << liczba1 << endl; cout << "Podaj liczbe nr 2 "; cin >> liczba2; cout << "Ok, liczba 2 to " << liczba2 << endl; cout << "Wynik: " << liczba1 + liczba2 << endl; Sleep( 30 ); }
void odejmowanie() { cout << "ODEJMOWANIE" << endl; cout << "Podaj liczbe nr1 "; int liczba1; int liczba2; cin >> liczba1; cout << "Ok, liczba nr 1 to " << liczba1 << endl; cout << "Podaj liczbe nr2 "; cin >> liczba2; cout << "Ok, liczba nr 2 to " << liczba2 << endl; cout << "Wynik: " << liczba1 - liczba2 << endl; Sleep( 30 ); }
int main() { cout << "Dostepne funkcje:" << endl; funkcje(); cout << "Wybierz jakas" << endl; int wybor; do { funkcje(); cin >> wybor; switch( wybor ) { case 1: dodawanie(); break; case 2: odejmowanie(); break; default: break; } } while( wybor != 3 ); return 0; }
|
|
Leo |
» 2012-12-23 17:57:12 A funkcja Do-while nie wykonywywałą się zawsze choć 1 raz ? cout << "Dostepne funkcje:" << endl; napis "dostepne funkcje" funkcje(); ukazuje 3 funkcje cout << "Wybierz jakas" << endl; napis wybierz jakas int wybor; wybor jako zmienna int pętla do-while ukazuje 3 funkcje, po czym czeka na wybór
Poprawny kod #include <iostream> #include <windows.h> using namespace std; void funkcje() { cout << "[1] - Dodawanie" << endl; cout << "[2] - Odejmowanie" << endl; cout << "[3] - Wyjscie" << endl; }
void dodawanie() { cout << "DODAWANIE" << endl; cout << "Podaj liczbe nr 1 "; int liczba1; int liczba2; cin >> liczba1; cout << "Ok, liczba 1 to " << liczba1 << endl; cout << "Podaj liczbe nr 2 "; cin >> liczba2; cout << "Ok, liczba 2 to " << liczba2 << endl; cout << "Wynik: " << liczba1 + liczba2 << endl; Sleep( 30 ); }
void odejmowanie() { cout << "ODEJMOWANIE" << endl; cout << "Podaj liczbe nr1 "; int liczba1; int liczba2; cin >> liczba1; cout << "Ok, liczba nr 1 to " << liczba1 << endl; cout << "Podaj liczbe nr2 "; cin >> liczba2; cout << "Ok, liczba nr 2 to " << liczba2 << endl; cout << "Wynik: " << liczba1 - liczba2 << endl; Sleep( 30 ); }
int main() { cout << "Dostepne funkcje:" << endl; funkcje(); cout << "Wybierz jakas" << endl; int wybor; do { cin >> wybor; switch( wybor ) { case 1: dodawanie(); break; case 2: odejmowanie(); break; default: break; } } while( wybor != 3 ); return 0; }
Oczywiście ukazanie funcji może być w pętli, ale problemem było podwójne ukazanie funkcji a nie jej umieszczenie. ;] |
|
jsc |
» 2012-12-23 17:57:41 Po pierwsze, widzę, że chcesz dobrze formatować posty, ale nie umiesz, więc zajrzyj na: Kurs STCPo drugie: W linijce 44 masz wywołanie funkcji wyświetlającej działania aplikacji i w linijce 45 w chodzisz do pętli, której każda iteracja (w przypadku do-while za pierwszym razem automatycznie) na swoim początku wywyołuje funkcję wyświetlającą działania aplikacji. |
|
silentus Temat założony przez niniejszego użytkownika |
» 2012-12-23 18:00:49 Aaa faktycznie, ale tak samo jest na kursie więc każdemu się wyświetli podwójnie :D Nie żebym odpisywał ale po prostu popatrzyłem jak tam jest. |
|
Mrovqa |
» 2012-12-23 18:04:24 Sam tak napisałeś: int main() { cout << "Dostepne funkcje:" << endl; funkcje(); cout << "Wybierz jakas" << endl; int wybor; do { funkcje(); cin >> wybor;
Pierwsze wyświetlenie jest Ci zbędne. Możesz je wywalić. /edit: wow, ale mnie osób wyprzedziło; znów przy 'Napisz nową wiadomość' nie wyświetliło informacji o zmianach. |
|
« 1 » |