otóż w internecie nie mogłem znaleźć odpowiedzi więc prosiłbym tutaj o przykład menu, w którym po wybraniu np. 1 pod którym znajduje się hasło Graniastosłupy pokaże się kolejne menu, które wyświetli podkategorie. pierwsze zrobię przy pomocy switcha a później?
np.
cout<<" 1- Wzory skroconego mnozenia"<< endl;
cout<<" 2- Graniastoslupy"<< endl;
cout<<" 3- Kalkulator - Menu "<< endl;
cout<<" 1 - Dodawania"<< endl;
cout<<" 2 - Odejmowanie"<< endl;
cout<<" 3 - Mnozenie"<< endl;
cout<<" 4 - Dzielenie"<< endl;
cout<<" 5 - Procent liczby"<< endl;
cout<<" 6 - Potegowanie"<< endl;
cout<<" 7 - Pierwiastkowanie"<< endl;
Chodzi mi i coś takiego jak wyżej czyli po wpisaniu 3 otwiera się kolejne menu z podkategoriami dla kalkulatora. z góry wielkie dzięki.
Znowu switch (zagnieżdżony). Albo if, jak wolisz.
Tylko sugerowałbym podzielić całość na funkcje. Wielokrotnie zagnieżdżony switch nie jest najlepszym pomysłem.
master -> możesz dać mały przykład ? dlaczego wielokrotny switch będzie złym rozwiązaniem ?
Bo się szybko w nim pogubisz. Funkcjami rozbijesz na czytelne bloki.
Wiem, że nie jestem master53, ale myślę że dobrze mówię.
ok to jutro popróbuję sobie gdyż dzisiaj już nie mam siły.
ps. mógłbym prosić o pomoc z potęgowaniem i pierwiastkowaniem w takim zapisie:
case 7:
cout<<" Wybrales PROCENT LICZBY"<< endl;
cout<<endl;
cout << "Podaj pierwsza liczbe: ";
cin >> a;
cout << "Podaj druga liczbe: ";
cin >> b;
Wynik = a % b;
cout<< Wynik;
break;
podałem przykład z procentami lecz chodzi tylko o układ. próbowałem a^b tak na logikę lecz nie działa, sqrt również odmawia posłuszeństwa..
Czy a % b nie oznacza przypadkiem reszty z dzielenia..?
Spróbuj pow(a,b), gdzie a to podstawa, natomiast b to wykładnik potęgi..
Do tego potrzebujesz biblioteki cmath: http://www.cplusplus.com/reference/clibrary/cmath/
pyt. 1
mam cmath w include oraz robiąc pow(a,b) wychodzi zero w przypadku 2 do 2 a w przypadku 2 do 3 wynik to 1.
cout<<"Podaj liczbe: "<< endl;
cin>>liczba;
cout<<"Do ktorej potegi chcesz podniesc wybrania liczbe?: "<< endl;
cin>>potega;
cout << "pow(" << liczba << "," << potega << ")=" << pow( liczba, potega ) << endl;
pyt.2
jeszcze jedno odnośnie sub menu a więc
case 1:
cout<<" Wybrales KALKULATOR"<< endl;
cout<<endl;
if ( 1 = 1)
;
cout<<" 1 - Dodawanie "<< endl;
cout<<" 2 - Odejmowanie"<< endl;
;
break;
po wybraniu 1 ma wyświetlać menu typu Dodawanie,Odejmowania lecz jak to tych cout'ów dodać kolejnego switcha?
case 1:
cout<<" Wybrales kalkulator"<< endl;
cout<<endl;
if ( 1 = 1)
;
cout<<" 1 Dodawanie "<< endl;
cout<<" 2 Odejmowania "<< endl;
;
case 1:
cout<<" wybrales dodawanie"<< endl;
count<<" podaj liczbe"<< endl;
cin>>a;
cout<<" podaj kolejna"<< endl;
cin>>b;
itd...
break;
w tym stylu?
Liczby są jakiego typu? I jeśli dobrze rozumiem, chcesz żeby po wyborze to wyglądało tak?
1) A
2) B
-a
-b
-c
3) C
4) D
EDIT: I na cholerę ci 1=1 w ifie? Raz że jeśli to porównanie to zawsze prawda, a dwa, że "=" przypisuje a nie porównuje...
tak wiem pomyliłem się "==" to porównanie.. z Pascala mi się myli trochę.
zgadza się, chcę by po wybraniu opcji np. GEOMETRIA ukazywało się menu do tego działu z możliwością wyboru działań.
całość wygląda na chwilę obecną tak
<<part.1>>
#include <conio.h>
#include <iostream>
#include <math.h>
#include <cmath>
using namespace std;
int dzialanie,a,b,Wynik;
float liczba, potega;
int main()
;;
short x;
cout<<"<< Witaj >>" << endl;
cout<<"--------------------------------------------------------------"<< endl;
cout<<" Kalkulator - Menu "<< endl; // początek kalkulatora
cout<<endl;
cout<<"| 1 - Dodawania"<< endl;
cout<<"| 2 - Odejmowanie"<< endl;
cout<<"| 3 - Mnozenie"<< endl;
cout<<"| 4 - Dzielenie"<< endl;
cout<<"| 5 - Procent liczby"<< endl;
cout<<"| 6 - Potegowanie"<< endl;
cout<<"| 7 - Pierwiastkowanie"<< endl;
// zakończenie częsci kalkulatora
cout<<"--------------------------------------------------------------"<< endl;
cout<<" Figury - Pole,Obwod,Objetosc..."<< endl;
cout<<endl;
cout<<"| 8 - Czworokat"<< endl;
cout<<"| 9 - Trapez"<< endl;
cout<<"| 10 - Rownoleglobok"<< endl;
cout<<"| 11 - Romb"<< endl;
cout<<"| 12 - Prostokat"<< endl;
cout<<"| 13 - Kwadrat"<< endl;
cout<<"| 14 - Deltoid"<< endl;
cout<<"--------------------------------------------------------------"<< endl;
cout<<" GRANIASTOSLUPY - Pole,Objetosc... "<< endl;
cout<<endl;
cout<<"| 15 - Szescian"<< endl;
cout<<"| 16 - Prostopadloscian"<< endl;
cout<<"--------------------------------------------------------------"<< endl;
cin >> x;
switch (dzialanie)
;;
case 1:
cout<<" Wybrales DODAWANIE"<< endl;
cout<<endl;
if ( x==1)
;;
cout<<" 1 lol "<< endl;
cout<<" 2 lol "<< endl;
;;
break;
case 2:
cout<<" Wybrales ODEJMOWANIE"<< endl;
cout<<endl;
cout << "Podaj pierwsza liczbe: ";
cin >> a;
cout << "Podaj druga liczbe: ";
cin >> b;
Wynik = a - b;
cout<< Wynik;
break;
case 3:
cout<<" Wybrales MNOZENIE"<< endl;
cout<<endl;
cout << "Podaj pierwsza liczbe: ";
cin >> a;
cout << "Podaj druga liczbe: ";
cin >> b;
Wynik = a * b;
cout<< Wynik;
break;
case 4:
cout<<" Wybrales DZIELENIE"<< endl;
cout<<endl;
cout << "Podaj pierwsza liczbe: ";
cin >> a;
cout << "Podaj druga liczbe: ";
cin >> b;
Wynik = a / b;
cout<< Wynik;
break;
case 5:
cout<<" Wybrales PROCENT LICZBY"<< endl;
cout<<endl;
cout << "Podaj pierwsza liczbe: ";
cin >> a;
cout << "Podaj druga liczbe: ";
cin >> b;
Wynik = a % b;
cout<< Wynik;
break;
case 6: // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
cout<<" Wybrales POTEGOWANIE"<< endl;
cout<<endl;
cout<<"Podaj liczbe: "<< endl;
cin>>liczba;
cout<<"Do ktorej potegi chcesz podniesc wybrania liczbe?: "<< endl;
cin>>potega;
cout << "pow(" << liczba << "," << potega << ")=" << pow( liczba, potega ) << endl;
break;
case 7: // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
cout<<" Wybrales PROCENT LICZBY"<< endl;
cout<<endl;
cout << "Podaj pierwsza liczbe: ";
cin >> a;
cout << "Podaj druga liczbe: ";
cin >> b;
Wynik = a % b;
cout<< Wynik;
break;
default:
cout << "Zapraszam Ponownie :-)" << endl;
;;
getch();
return 0;
;;
czyli coś na tej zasadzie lecz to nie działa
case 1:
cout<<" Wybrales KALKULATOR"<< endl;
cout<<endl;
switch (kalkulator)
case 1:
cout<<" 1 dodawanie"<< endl;
cin>>a;
cin>>b;
cout<< a+b;
break;
case 2:
cout<<" 2 odejmowanie"<< endl;
cin>>a;
cin>>b;
cout<< a-b;
break;
czyli switch w switch'u..
cin >> x;
switch (dzialanie)
wpisujesz nr opcji do x ale switcha obsługujesz na podstawie niezainicjalizowanej zmiennej dzialanie.
Potem nie rozumiem co ma to znaczyć w case 1:
if ( x==1)
‹;;
cout<<" 1 lol "<< endl;
cout<<" 2 lol "<< endl;
›;;
Procent liczby nie liczy się przez operator % bo odpowiada on za resztę z dzielenia.
cin >> x;
switch (dzialanie)
case 1:
cout<<" Wybrales kalkulator"<< endl;
cout<<endl;
if (x==1)
cout<<" wybralesdodawanie"<< endl;
break;
w sensie tak?
Pisanie funkcji jest naprawdę proste. Znacząco ułatwia pisanie programów i jeszcze bardziej ułatwia czytanie kodu osobom trzecim. Jeżeli chcesz pisać switche, w switchu, w ifie, w forze, w switchu... to nie wróżę Ci kariery programisty.
Po co te średniki po klamrach i przed nimi?
A teraz błędy.
1.
cin >> x;
switch (dzialanie)
Co to jest dzialanie? Dzialanie to x. Dlatego zrób dzialanie = x; Albo po prostu
cin >> x;
switch(x)
2.
int dzialanie,a,b,Wynik;
a = 5;
b = 2;
Wynik = a / b;
W zmiennej Wynik przesiaduje 2. A jak nietrudno się domyśleć, powinno być 2,5.
Typy zmiennych a, b, Wynik powinny być (co najmniej) double.
3.
Procent liczby to a * (b/100). Chyba o to chodzi.
@up
Zmienna x jest gdzieś jeszcze później wykorzystywana, dobrze by było aby się zdecydował na jedną z wersji.
Najzwyczajniej w świecie: zrób sobie funkcję która wyświetla główne menu, a potem w zależności od argumentu z jakim będzie wywołana czyści ekran i wyświetla menu główne z odpowiednim podmenu (zdecydowanie czytelniej by było gdybyś wyświetlanie podmenu napisał w osobnych funkcjach i to je przekazywał do głównej funkcji jako argument, ale tego robić nie musisz).
Typy zmiennych a, b, Wynik powinny być (co najmniej) double.
Nawet zwykły float wystarczy na taki prościutki kalkulator. Ważne, żeby nie int.
jednak zasięgnę jeszcze trochę do lektury i zrobię to funkcjami gdyż to jest faktycznie zbyt pogmatwane.
Gdybyś zrobił to funkcjami, to Twój program wyglądałby mniej więcej tak (nie mam kompilatora, a także nie chcę napisać wszystkiego za Ciebie, więc tak poglądowo tylko napisałem):
double dodawanie(a, b)
;
return a + b;
;
double odejmowanie(a, b)
;
return a - b;
;
int main()
;
cin >> dzialanie;
cin >> pierwsza;
cin >> druga;
switch(dzialanie)
case 1:
dodawanie(pierwsza, druga);
break;
case 2:
odejmowanie(pierwsza, druga);
break;
;
no właśnie wielkie dzięki:) dzisiaj sobie poćwiczę nad jakimś krótkim programikiem by się z tym oswoić.