Switch
syntax:
switch(podmienka) { case hodnota1:príkaz1; break; case hodnota2:príkaz2; break; case hodnota3:príkaz3; break; ... default:príkazn; }
Tento príkaz sa používa na podobný účel ako príkaz zložený z viacerých if else. Avšak umožňuje vetvenie na základe jednej podmienky. Príkaz switch vyhodnotí znakový vyraz v zátvorkách a jeho hodnotu porovná postupne s hodnotami uvedenými za kľúčovými slovami case. Pri zhode sa vykoná príkaz uvedený pri danej alternatíve Ak by na konci nebol príkaz break, pokračovalo by sa vo vykonávaní ostatných možností až do konca príkazu switch. Možnosť default zahrňuje všetky ostatné hodnoty výrazu uvedeného ako argument kľúčového slova switch. Nie je povinná no kvôli prehľadnosti sa odporúča.
Vlastnosti:
- podmienka testovaná vo switch musí byť celočíselného typu teda int
- každá vetva prepínania muší byť ukončená príkazom break inak sa vykoná nasledujúca vetva
- vetva default sa vykonáva, ak žiadna z vyššie uvedených vetiev nevyhovuje
Vzorový príklad:
Napíšte program, ktorý načíta číslo z klávesnice od 1 do 7 a podľa daného čísla vypíše názov dňa.
#include <stdio.h>
int main(void)
{
int den;
printf("zadaj číslo dňa od 1 do 7 ktorý chceš vypísať \t");
scanf("%d",&den);
switch (den)
{
case 1:
printf("Pondelok");
break;
case 2:
printf("Utorok");
break;
case 3:
printf("Streda");
break;
case 4:
printf("Štvrtok");
break;
case 5:
printf("Piatok");
break;
case 6:
printf("Sobota");
break;
case 7:
printf("Nedeľa");
break;
}
return 0;
}

Úloha číslo
1: Napíšte program, ktorý testuje načítaný znak zo
vstupu. Ak to bude ´a´ alebo ´A´ vypíše slovo: "ANO" ak to bude ´n´
alebo ´N´ vypíše slovo "NIE" inak vypíše: "Nezadal si ani jeden z týchto
znakov".
#include <stdio.h>
int main(void)
{
char znak;
printf("\n Zadaj ľubovoľný znak z klávesnice: ");
scanf("%c",&znak);
switch ( znak )
{
case 'a':
case 'A':
printf( "\n ANO" );
break;
case 'n':
case 'N':
printf( "\n NIE" );
break;
default :
printf("Nezadal si ani jeden z týchto znakov");
break;
}
return 0;
}

Úloha číslo 2: Napíšte program, ktorý na základe zadaného čísla mesiaca vypíše počet dní v danom mesiaci. Použite switch príkaz na rozhodovanie.
#include <stdio.h>
int main()
{
int mesiac;
printf("Zadajte číslo mesiaca (1-12): ");
scanf("%d", &mesiac);
switch (mesiac)
{
case 1:
printf("Január má 31 dní.\n");
break;
case 2:
printf("Február má 28 alebo 29 dní.\n");
break;
case 3:
printf("Marec má 31 dní.\n");
break;
case 4:
printf("Apríl má 30 dní.\n");
break;
case 5:
printf("Máj má 31 dní.\n");
break;
case 6:
printf("Jún má 30 dní.\n");
break;
case 7:
printf("Júl má 31 dní.\n");
break;
case 8:
printf("August má 31 dní.\n");
break;
case 9:
printf("September má 30 dní.\n");
break;
case 10:
printf("Október má 31 dní.\n");
break;
case 11:
printf("November má 30 dní.\n");
break;
case 12:
printf("December má 31 dní.\n");
break;
default:
printf("Neplatné číslo mesiaca.\n");
break;
}
return 0;
}

Úloha číslo 3: Napíšte program, ktorý na základe zadaného znaku vypíše informáciu, či je daný znak samohláska alebo spoluhláska.
#include <stdio.h>
int main()
{
char znak;
printf("Zadajte znak: ");
scanf(" %c", &znak);
switch (znak)
{
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
case 'y':
case 'A':
case 'E':
case 'I':
case 'O':
case 'U':
case 'Y':
printf("Znak je samohláska.\n");
break;
default:
printf("Znak je spoluhláska.\n");
break;
}
return 0;
}
