Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

10.5.2 Useat peräkkäiset ehdot

Vaikka rakenne

	if (ehto1) lause1;
	else
	  if (ehto2) lause2;
	  else
	    if (ehto3) lause3;
	    else lause4; 

jossain mallissa sisennetäänkin ylläkuvatulla tavalla, on ajatus useimmiten lähempänä seuraavaa sisennystä:

c-silm\postimak.c - esimerkki samanarvoisista ehtolauseista

	double postimaksu(double paino) 
	/* Palautetaan kirjemaksun suuruus. 0 tarkoittaa pakettia */
	{
	  if      ( paino < 50 )   return  2.10;
	  else if ( paino < 100 )  return  3.50;
	  else if ( paino < 250 )  return  5.50;
	  else if ( paino < 500 )  return 10.00;
	  else if ( paino < 1000 ) return 15.00;
	  else                     return  0.00;
	}

Sovimme siis, että rakenne onkin muotoa:

	if      ( ehto1 ) lause1
	else if ( ehto2 ) lause2
	else if ( ehto3 ) lause3
	else              lause4 

Tehtävä 10.98 Lääni

Kirjoita aliohjelma
void laani(string rekisteri)
joka tulostaa missä läänissä auto on rekisteröity. (Ennen oli Suomessa monta lääniä ja rekisterinumeron 1. kirjain määräsi missä läänissä auto oli rekisteröity).
Kirjaimen yhtäsuuruutta testataan if ( c == 'a' ) ...
Merkkijonon 1. merkki saadaan c = rekisteri[0]; edellyttäen tietysti että rekisteri != "" .

Tehtävä 10.99 if- else

Mitä on muuttujien arvot seuraavien ohjelmanpätkien jälkeen (pöytätesti!)?
if (a<5)
/*1*/ a=1; b=2; c=3;
b=3;
a=6;
c=7;

if (a<0) a=3; else
/*5*/ a=1; b=2; c=3;
if (a>2) b=3; a=6;
c=7;





/*2*/ a=1; b=2; c=3;
if (a<5) b=3; a=6; c=7;

/*6*/ a=1; b=2; c=3;
if (a<- 5) if (a<0) a=6;
else a=2; c=7;





/*3*/ a=1; b=2; c=3;
if (a<5) {b=3; a=6;}
c=7;

/*7*/ a=1; b=2; c=3;
if (a<- 5) b=3;
if (a<5) a=6;
else a=2; c=7;





/*4*/ a=1; b=2; c=3; if (a<5)
b=3; else { a=6; c=7; }

/*8*/ a=1; b=2; c=3;
if (a<0) a=3; else;
if (a>2) b=3; a=6;
c=7;

Sisennä ohjelmanpätkät "asianmukaisesti".

Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys