• Non ci sono risultati.

ifif annidati annidati

N/A
N/A
Protected

Academic year: 2021

Condividi "ifif annidati annidati"

Copied!
10
0
0

Testo completo

(1)

95

if if annidati annidati

Le istruzioni che compaiono nell’if non sono soggette ad alcuna restrizione, per cui possono essere anch’esse if:

if if annidati annidati

Ambiguità in caso di

Ambiguità in caso di if if annidati annidati

else è relativa al più vicino degli if che lo precedono che manchi dell’else

if (E1) if(E2)

istr1 else

istr2

if (E1){

if(E2) istr1 else

istr2 }

if (E1) { if(E2)

istr1 }

else

istr2 equivalenti

diversi

(2)

97

Esercizi Esercizi

… su if-else

Esercizio Esercizio

Scrivere un programma che richiede in

ingresso 2 valori interi e stampa il maggiore

(3)

99

Diagramma di flusso Diagramma di flusso

n1>n2

Maggiore è n1

falso vero

Maggiore è n2

Soluzione Soluzione

#include <stdio.h>

main() {

int n1, n2;

printf("Dammi 2 interi separati dallo spazio: \n");

scanf("%d", &n1);

scanf("%d", &n2);

if (n1>n2)

printf("Il maggiore è: %d", n1);

else

printf("Il maggiore è: %d", n2);

}

(4)

101

Esercizio Esercizio

Scrivere un programma che richieda in

ingresso un valore intero e stampa “pari” se il numero è pari, “dispari” altrimenti.

Esempio Esempio

7 7 Î Î Il numero Il numero è è dispari dispari 90 90 Î Î Il numero Il numero è è pari pari

Soluzione Soluzione

#include <stdio.h>

main() {

int n;

printf("Dammi un intero: \n");

scanf("%d", &n);

if (n%2==0)

printf("Il numero è pari");

else

printf("Il numero è dispari");

}

(5)

103

Esercizio Esercizio

Scrivere un programma per il calcolo delle radici di un’equazione di secondo grado con coefficienti reali: a, b, c.

ax 2 + bx + c = 0

a e b sono 0 Î degenere

a==0 Î I grado

delta < 0 Î determinante negativo

Soluzione Soluzione

#include <stdio.h>

#include <math.h>

main() {

float a, b, c, r1, r2, delta;

printf("Questo progr risolve un'equazione di II grado: \n");

printf("ax^2 + bx + c: \n");

printf("Dammi il coefficiente a: \n");

scanf("%f", &a);

printf("Dammi il coefficiente b: \n");

scanf("%f", &b);

printf("Dammi il coefficiente c: \n");

scanf("%f", &c);

(6)

105

Soluzione (

Soluzione (cont cont.) .)

if (a==0 && b==0)

printf("equazione degenere\n");

else if (a==0) { r1=-c/b;

printf("equazione di I grado \n");

printf("radice = %f \n", r1);

} else {

delta = b*b - 4*a*c;

if (delta<0) printf("determinante negativo\n");

else {

delta = sqrt(delta);

r1 = (-b + delta) / (2*a);

r2 = (-b - delta) / (2*a);

printf("equazione di II grado\n");

printf("radici = %f e %f \n", r1, r2);

} }

} // chiude il main

Esercizio Esercizio

In accordo alle regole del Calendario Gregoriano un anno è bisestile se è un multiplo di 4 e non è un secolo, oppure un secolo multiplo di 400.

Scrivere un programma che verifichi se l’anno inserito da tastiera è bisestile.

Esempio Esempio

1992 bisestile (multiplo di 4)

1800 no (multiplo di4, secolo non multiplo di 400)

2000 bisestile (secolo multiplo di 400)

(7)

107

Soluzione Soluzione

#include<stdio.h>

main() {int anno;

int ris;

printf("Dammi l'anno: ");

scanf("%d", &anno);

ris = ((anno %4 ==0) && (anno % 100 !=0))

|| (anno %400 == 0);

if (ris == 1) printf("Anno bisestile");

else printf("Anno NON bisestile");

}

Esercizio Esercizio

Scrivere un programma che richiede in

ingresso tre valori interi e stampa il

maggiore

(8)

109

n1<=n2 e n2<=n3

---|---|---|---->

n1 n2 n3

n1>n2 e n1<=n3

---|---|---|---->

n2 n1 n3

n1>n2

n1>n3 n2>n3

Magg n3 Magg n2 Magg n3 Magg n1

falso

falso

falso vero

vero vero

Soluzione Soluzione

#include <stdio.h>

main() {

int n1, n2, n3;

printf("Dammi 3 interi separati dallo spazio: \n");

scanf("%d", &n1);

scanf("%d", &n2);

scanf("%d", &n3);

if (n1>n2) if (n1>n3)

printf("Il maggiore è: %d", n1);

else

printf("Il maggiore è: %d", n3);

else

if (n2>n3)

printf("Il maggiore è: %d", n2);

else

printf("Il maggiore è: %d", n3);

Vuol dire che: n1<=n2 ---|---|--->

n1 n2

Vuol dire che: n1>n2 e n1<=n3 ---|---|---|---->

n2 n1 n3

Vuol dire che: n1<=n2 e n2<=n3 ---|---|---|---->

n1 n2 n3

(9)

111

oppure oppure

#include <stdio.h>

main() {

int n1, n2, n3;

printf("Dammi 3 interi separati dallo spazio: \n");

scanf("%d", &n1);

scanf("%d", &n2);

scanf("%d", &n3);

if ((n1>n2) && (n1>n3))

printf("Il maggiore è: %d", n1);

else if (n2>n3)

printf("Il maggiore è: %d", n2);

else

printf("Il maggiore è: %d", n3);

}

oppure oppure

#include <stdio.h>

main() {

int n1, n2, n3, max;

printf("Dammi 3 interi separati dallo spazio: \n");

scanf("%d", &n1);

scanf("%d", &n2);

scanf("%d", &n3);

max=n1;

if (n2 > max) max=n2;

if (n3 > max) max=n3;

printf("Il maggiore è: %d", max);

(10)

113

Esercizio Esercizio

Scrivere un programma che richiede in input due date nel formato g,m,a e determina la più recente.

Esempio

1 12 1998

10 12 1998 più recente

Riferimenti

Documenti correlati

Since, as we mentioned, every algebra satisfying TIP satisfies Haiman’s higher arguesian identities, an obvious way to use the methods from [3] would be to show that if every

In assenza di parentesi graffe, ogni else si associa al primo if che lo precede per il quale non sia ancora stato identificato un

Permette di ripetere l’esecuzione di un blocco di istruzioni finchè viene verificata una condizione logica valutata all’inizio del

equazioni passaggi passaggi passaggi passaggi soluzioni soluzioni soluzioni soluzioni

Tra i metodi della nuova classe, oltre a quelli che restituisco- no i valori delle variabili istanza, definire un metodo etichetta che restituisce le in- formazioni relative ad

[r]

PRESENT SIMPLE + PRESENT SIMPLE + SIMPLE PAST + PAST PERFECT ( HAD + PAST PARTICIPLE ) + PRESENT SIMPLE FUTURE SIMPLE ( WILL ) PRESENT CONDITIONAL. (

[r]