Kalkulator, funkcja bool
Ostatnio zmodyfikowano 2016-11-20 14:17
wokub Temat założony przez niniejszego użytkownika |
Kalkulator, funkcja bool » 2016-11-19 19:58:39 Witam. Jestem ciut nowy, jeżeli chodzi o programowanie w języku C/C++... O ile udało mi się napisać podstawę, to jest wymagane jeszcze użycie funkcji, która pozwoli nam wybrać, czy kontynuować (zacząć od nowa), czy zakończyć. Ma się to odbywać po przez wpisanie odpowiednio T i N. Domyślam się, że mowa o funkcji ,,bool". Nie wiem jednak jak to napisać. Póki co mam takie coś: #include <iostream> #include <conio.h> #include <cstdlib> #include <cstdio> #include <cmath>
using namespace std;
int l1, l2, wybor, dodawanie, mnozenie; int main() { for(;; ) { cout << "Kalkulator" << endl; cout << "Podaj pierwszą liczbę:" << endl; cin >> l1; cout << "Podaj drugą liczbę:" << endl; cin >> l2; cout << "========Menu========" << endl; cout << "1.Dodawanie" << endl; cout << "2.Mnozenie" << endl; cout << "N.Koniec" << endl; cout << " Wybrałeś :"; cin >> wybor; if( wybor == 1 ) { dodawanie = l1 + l2; cout << " Twój wynik dodawania to: " << dodawanie << endl; cout << " Chcesz spróbować jeszcze raz? (T/N) " << endl; } else if( wybor == 2 ) { mnozenie = l1 * l2; cout << " Twój wynik mnożenia to: " << mnozenie << endl; cout << " Chcesz spróbowć jeszcze raz? (T/N) " << endl; } }
Z góry dzięki za jakiekolwiek podpowiedzi. |
|
latajacaryba |
» 2016-11-19 20:33:40 #include <iostream> #include <conio.h> #include <cstdlib> #include <cstdio> #include <cmath> bool sprawdz( char x ) { if( x == 'T' ) return true; else return false; } using namespace std;
int l1, l2, wybor, dodawanie, mnozenie; bool wynik; int main() { do { cout << "Kalkulator" << endl; cout << "Podaj pierwszą liczbę:" << endl; cin >> l1; cout << "Podaj drugą liczbę:" << endl; cin >> l2; cout << "========Menu========" << endl; cout << "1.Dodawanie" << endl; cout << "2.Mnozenie" << endl; cout << "N.Koniec" << endl; cout << " Wybrałeś :"; cin >> wybor; if( wybor == 1 ) { dodawanie = l1 + l2; cout << " Twój wynik dodawania to: " << dodawanie << endl; cout << " Chcesz spróbować jeszcze raz? (T/N) " << endl; } else if( wybor == 2 ) { mnozenie = l1 * l2; cout << " Twój wynik mnożenia to: " << mnozenie << endl; cout << " Chcesz spróbowć jeszcze raz? (T/N) " << endl; } else break; char x; cin >> x; wynik = sprawdz( x ); } while( wynik ); } Na koniec pare uwag: - po co Ci te biblioteki: <conio.h> <cstdlib> <cstdio> <cmath> ? - nie używaj polskich liter. - staraj się rozpracowywać wszystkie warianty (masz if'a dla liczb 1 i 2 a co z innymi? w tym przypadku tragedii nie było, bo dalej program po prostu się kończył, ale przy większych programach warto o tym pamiętać. Wystarczy else break) i ciekawostka, jeśli masz if'a lub else i chcesz wpisać jedną instrukcję (w programie else break;) to nie musisz używać klamer. |
|
wokub Temat założony przez niniejszego użytkownika |
» 2016-11-19 20:59:04 Właśnie nie byłem pewny tych include. Muszę się tego oduczyć. Taki nawyk, że jak coś nic nie robi, to nie przeszkadza. A potem bałagan w kodzie. Dzięki za wszystkie rady, od razu stało się to jaśniejsze. Mam jeszcze jedno pytanie. Zmodyfikowałem na szybko ten kod, gdyz za kazdym razem wylaczal program, bez wzgledu na T i N. I nie wiem, który kod działa. #include <iostream>
bool sprawdz( char x ) { if( x == 'T' ) return true; else return false; if( x == 'N' ) return 0; } using namespace std;
int l1, l2, wybor, dodawanie, mnozenie; bool wynik; int main() { do { cout << "Kalkulator" << endl; cout << "Podaj pierwsza liczbe:" << endl; cin >> l1; cout << "Podaj druga liczbe:" << endl; cin >> l2; cout << "========Menu========" << endl; cout << "1.Dodawanie" << endl; cout << "2.Mnozenie" << endl; cout << " Wybrales :"; cin >> wybor; if( wybor == 1 ) { dodawanie = l1 + l2; cout << " Twój wynik dodawania to: " << dodawanie << endl; cout << " Kontynuowac? (T/N) " << endl; } else if( wybor == 2 ) { mnozenie = l1 * l2; cout << " Twoj wynik mnozenia to: " << mnozenie << endl; cout << " Kontynuowac? (T/N) " << endl; } else break; char x; cin >> x; wynik = sprawdz( x ); } while( wynik ); return 0; cin.get(); }
Dopisałem na końcu I na początku dodałem wartość: { if( x == 'T' ) return true; else return false; if( x == 'N' ) return 0; }
Nie wiem, który kod sprawił, że wszystko działa i czy nie popełniłem jakiegoś świętokradztwa tymi czynnościami. Tak powinno być? Mógłbym zostawić to i się cieszyć, że działa. Kwestia w tym, że też w przyszłości chcę mieć wiedzę, nie tylko zdany kierunek. |
|
latajacaryba |
» 2016-11-19 21:23:21 Chciałeś z dużych liter (T/N) Musisz wiedzieć, że komputer określa sobie litery za pomocą liczb (patrz tablica ASCII) https://www.google.pl/search?q=ascii&client=firefox-b&source=lnms&tbm=isch&sa=X&ved=0ahUKEwjQ0cyt0rXQAhWKFCwKHXkNACQQ_AUICCgB&biw=1920&bih=969#tbm=isch&q=ascii+tablica Litera 'T' ma kod 84 a 't' ma kod 116. Dlatego nigdy 'A' nie równe 'a' Możesz ewentualnie zrobić tak: if( x == 'T' || x == 't' ) return true;
|
|
Gibas11 |
» 2016-11-19 21:23:44 @latajacaryba nie używaj polskich liter. |
Wut? |
|
latajacaryba |
» 2016-11-19 21:24:17 Przepraszam, liter diakratycznych :DD |
|
karambaHZP |
» 2016-11-19 21:42:08 |
|
Gibas11 |
» 2016-11-20 10:41:31 @latajacaryba Domyśliłem się, chciałbym wiedzieć za to dlaczego ma ich nie dawać? Na Linuksie działają od ręki, na Windowsie wystarczą 3 linie kodu żeby zaczęły. |
|
« 1 » 2 |