04. Es. svolto: ordine crescente

Traccia:

Scrivere un programma che riceve da tastiera cinque numeri interi. Indicare se i numeri sono inseriti in ordine strettamente crescente.

Strategia:

La variabile di nome ordinato è utilizzata come flag, può cioè assumere solo due valori: 1 e 0.

Se alla fine dei confronti la variabile vale 1 allora la sequenza è ordinata, se vale 0 non lo è.

Inizialmente la variabile ordinato è inizializzata ad 1, ad indicare che, "provvisoriamente", si ritiene la sequenza ordinata.

Notare che quando anche uno solo degli if è verificato vuol dire che la sequenza non è ordinata. In corrispondenza di un if la cui condizione è verificata la variabile ordinato assume definitivamente il valore 0.

Se nessun if è verificato, la variabile ordinato non cambia valore e mantiene il valore 1 con cui era stata inizializzata.

Nota:

In questo esercizio non si fa uso di array né di operatori logici AND e OR perché non sono stati ancora introdotti.

Soluzione:


#include <stdio.h>

int main()

{

int x1, x2, x3, x4, x5;

int ordinato = 1;

printf("Inserire una sequenza di cinque numeri interi: \n");

scanf("%d %d %d %d %d", &x1, &x2, &x3, &x4, &x5);

if (x1 >= x2){

ordinato = 0;

}

if (x2 >= x3){

ordinato = 0;

}

if (x3 >= x4){

ordinato = 0;

}

if (x4 >= x5){

ordinato = 0;

}

if (ordinato)

printf("La sequenza inserita e' strettamente crescente\n");

else

printf("La sequenza inserita NON e' strettamente crescente\n");

return 0;

}

int ordinato = 1;

Notare che in questo programma le variabili di tipo int sono dichiarate su due distinte righe, ripetendo il tipo.

E' solo una scelta "estetica", le variabili si potevano infatti dichiarare tutte su una sola riga, utilizzando un solo descrittore di tipo.

La variabile ordinato è inizializzata al momento della dichiarazione.

if (ordinato)

In questo if la condizione è rappresentata da una variabile di tipo intero.

Il test risulta verificato se la variabile ordinato è diversa da zero (può essere anche un numero negativo). Se la variabile vale zero il test non è verificato.