Naredba switch-case omogućava jednostruko grananje koje ovisi o vrijednosti postavljenog uvjeta.
Za razliku od višestrukog uvjetnog grananja kod kojeg su uvjeti logički izrazi, u naredbi switch-case uvjet je cjelobrojni izraz ili cjelobrojna varijabla. Izračun cjelobrojnog izraza ili vrijednost cjelobrojne varijable mora biti cijeli broj.
-
Vrijednost uvjeta se uspoređuje s nizom zadanih cjelobrojnih konstanti: konst1, konst2, konst3, itd. Ako je vrijednost uvjeta jednaka nekoj od zadanih konstanti, izvršava se blok naredbi pridružen toj konstanti.
-
Po završetku izvršenog bloka, naredba break prekida izvršavanje switch-case bloka naredbi i nastavlja program prvom naredbom nakon switch‑case bloka.
-
Ako vrijednost uvjeta nije jednaka niti jednoj od ponuđenih konstanti, izvršava se blok naredbi pridružen naredbi default. U slučaju izostavljanja naredbe default program će nastaviti izvršavanje prvom naredbom nakon switch‑case bloka.
Cjelokupni switch‑case blok zapisuje se unutar para otvorena-zatvorena vitičasta zagrada ({}).

|
Zadatak:
|
Treba izračunati ukupni otpor za otpore R1 i R2 ovisno o tome jesu li spojeni serijski ili paralelno. Ispis neka bude oblika:
Otpor R1 (u omima):
Otpor R2 (u omima):
Za serijski spoj otpora upisi 1, a za paralelni 2:
Ako se otpori od ... oma i ... oma spoje u ... ukupni je otpor ... oma.
|
Definirane su dvije grane (jedna za paralelni spoj, druga za serijski). Ovisno o tome što korisnik upiše (broj 1 ili broj 2) izvršit će se jedna od dvije grane. U slučaju da korisnik unese vrijednost koja nije 1 ili 2, ispisat će se upozorenje.
Rješenje:
|
#include<iostream>
#include<iostream>
using namespace std;
int main()
{
float R,R1,R2;
int i;
cout<<"Otpor R1 (u omima):";
cin>>R1;
cout<<"Otpor R2 (u omima):";
cin>>R2;
cout<<"Za spoj otpora u seriju upisi 1, a za paralelu 2:";
cin>>i;
switch (i)
{
case 1:
R=R1+R2;
cout<<"Ako se otpori od "<<R1<<" oma i " <<R2;
cout<<" oma spoje u seriju ukupni je otpor " <<R<<" oma."<<endl;
break;
case 2:
R=(R1*R2)/(R1+R2);
cout<<"Ako se otpori od "<<R1<<" oma i " <<R2;
cout<<" oma spoje u paralelu, ukupni je otpor " <<R<<" oma."<<endl;
break;
default:
cout<<"Pogresan unos. Unesi 1 ili 2"<<endl;
}
return 0;
}
|
Provjera za unos vrijednosti 2 i 4 te odabir paralelnog spoja:
|
Otpor R1 (u omima): 200
Otpor R2 (u omima): 400
Za spoj otpora u seriju upisi 1, a za paralelu 2: 2
Ako se otpori od 200 oma i 400 oma spoje u paralelu, ukupni je otpor 133.333 oma.
|
|
|
|