You are on page 1of 4

OPERATOR VIŠESTRUKOG IZBORA – SWITCH

Omogućava organizovanje grananja u programu izborom jednog između više


operatora.Ima sledeći oblik:
switch (izraz)
{ case konstanta1:
operator1
...
break;
case konstanta2:
operator2
...
break;
...
case konstanta k:
operator k
...
break;
default:
operator o
...
break;
}

Iza rezervisane riječi switch navodi se izraz čija je vrijednost cjelobrojna (ili znak), koji se
naziva selektor.Ispred svake grupe operatora se ispisuju konstante ili cjelobrojni konstantni
izrazi, koji predstavljaju njihova obilježja.Operatorom višestrukog izbora se izvršava ona grupa
operatora ispred koje se nalazi konstanta(ili konstantni izraz) koji je jednak vrijednosti selektora.
U slučaju da vrijednost selektora nije jednaka ni jednoj od konstanti, izvršava se grupa operatora
koji se nalaze iza default alternative, ako se izostavi default neće se izvršiti ni jedna od
alternativa operatora switch. Ista konstanta se ne smije pojaviti kao obilježje za dvije grupe
operatora.

Npr. switch(ocjena)
{ case 5: printf(’’odlican’’); break;
case 4: printf(’’vrlo dobar’’); break;
case 3: printf(’’dobar’’); break;
case 2: printf(’’dovoljan’’); break;
case 1: printf(’’nedovoljan’’); break;
default: printf(’’nekorektna ocjena’’);
}
Ukoliko se iza neke grupe operatora u switch ispusti break operator tada će se u slučaju
izbora te grupe izvršiti i sve preostale alternative do pojave break ili kraja switch operatora.
Dozvoljeno je jednoj grupi operatora dodijeliti više konstanti koje čine njihovo obilježje.
Npr. switch(i)
{ case 1: case 5: case 6: x=x+2; break;
case 2: case 3: case 4: x=x-2; break;
case 7: x=x+1; break;
default: printf(’’Nekorektan broj’’);
}

Primjer
Napiši switch operator ekvivalentan sledećem if operatoru:

if(k==0)
r++;
else1
if(k==1)
s++;
else
if((k==2)||(k==3)||(k==4)) t++;

switch (k)
{ case 0:r++;break;
case 1: s++;break;
case 2: case 3: case 4: t++;break;}
Primjer
/*Napisati program koji za dati redni broj dana u nedjelji stampa ime dana.*/
#include<stdio.h>
int main()
{
int br;
printf("unesi broj od 1 do 7:");
scanf("%d",&br);
switch(br)
{
case 1: printf("ponedjeljak\n");break;
case 2: printf("utorak\n");break;
case 3: printf("srijeda\n");break;
case 4: printf("cetvrtak\n");break;
case 5: printf("petak\n");break;
case 6: printf("subota\n");break;
case 7: printf("nedelja\n");break;
default:printf("nekorektan broj\n");
}
return 0;
}

Primjer

/*Napisati program kojim se ucitava znak za operaciju (+,-,*,/) i dva realna operanda,a
zatim ispisuje rezultat*/
#include<stdio.h>
int main()
{
char znak;
float x,y;
printf("Unesi dva realna broja i znak za operaciju:");
scanf("%f %f %c",&x,&y,&znak);
switch(znak)
{
case '+':printf("%f+%f=%f",x,y,x+y);break;
case '-':printf("%f-%f=%f",x,y,x-y);break;
case '*':printf("%f*%f=%f",x,y,x*y);break;
case '/':printf("%f/%f=%f",x,y,x/y);break;
default:printf("nekorektno unesen znak");
}
return 0;
}
Primjer
/*Napisati program kojim se za ucitani ugao(dat u stepenima) koji moze biti veci od 360
odredjuje kvadrant kome pripada.*/
#include<stdio.h>
int main()
{
int u;
printf("Unesi ugao u stepenima:");
scanf("%d",&u);

switch(u%360/90)
{
case 0:printf("I kvadrant");break;
case 1:printf("II kvadrant");break;
case 2:printf("III kvadrant");break;
case 3:printf("IV kvadrant");break;
}
return 0;
}

Primjer
/* Napisati program koji za unijeti datum ispisuje sutrašnji datum. */
#include<stdio.h>
int main()
{ int d,m,g,bd;
printf("Unesi dan, mjesec i godinu");
scanf("%d%d%d",&d,&m,&g);
switch(m)
{ case 1:case 3:case 5:case 7:case 8:case 10:case 12: bd=31;break;
case 4:case 6:case 9:case 11: bd=30;break;
case 2:{if((g%4==0)&&(g%100!=0)||(g%400==0)) /*provjera da li je god. prestupna */
bd=29;
else bd=28;}
}
if(d<bd) d++;
else
{d=1;
if(m<12) m++;
else{m=1;
g++;}
}
printf("Datum sledeceg dana je %d.%d.%d.",d,m,g);
return 0;
}

You might also like