Il ciclo enumerativo (for)

Per introdurre la sintassi in linguaggio C di questo particolare tipo di iterazione vediamo subito di risolvere un problema che ne richiede l'uso. Cerchiamo di costruire un programma che calcoli tutti i divisori interi di un numero compresi in un intervallo specificato. Eccone una possibile versione

#include 
#include 

main()
{	// Dichiarazione delle variabili
	int i, n, m, num, resto;

	printf("Programma per il calcolo di tutti i \n");	
	printf("divisori interi di un numero compresi \n");
	printf("in un intervallo specificato \n\n\n");
	
	// Acquisizione dei dati
	printf("Numero di cui si desidera sapere i divisori: ");
	scanf("%d",&num);
	printf("Estremo inferiore dell'intervallo in cui cercare i divisori ");	
	scanf("%d",&n);
	printf("Estremo superiore dell'intervallo in cui cercare i divisori ");
	scanf("%d",&m);

	// Ricerca e visualizzazione dei divisori
	for (i=n; i<=m; i++)
	    if (!(num % i)) printf("%5d e' divisore di %5d\n", i, num); 

	system ("PAUSE");
	return 0;
}

Il principio alla base dell'algoritmo risolutivo è semplice. Una variabile (i) assume tutti i valori interi tra l'estremo inferiore dell'intervallo in cui cercare i divisori (n) e l'estremo superiore (m). Per ogni valore assunto da i viene calcolato il resto della divisione tra num e i con l'espressione num % i. Quando il resto è zero iè divisore di num, e ne viene visualizzato il valore con apposito messaggio, altrimenti si procede senza nessun output.

Tutto è realizzato con il comando composto

for (i=n; i<=m; i++)
    if (!(num % i)) printf("%5d e' divisore di %5d\n", i, num); 

La riga
for (i=n; i<=m; i++)
stabilisce che partendo da (i=n) occorre ripetere le istruzioni del corpo del ciclo, fin quando è verificato che (i<=m), e ogni volta aumentando la i di 1 (i++ è il comando che incrementa la i. In pratica è come srivere i=i+1). Il comando che segue:
if (!(num % i)) printf("%5d e' divisore di %5d\n", i, num);
visualizza il messaggio quando (num % i) è zero. Se avete qualche dubbio ricontrollate la tabella degli operatori e l'uso dei valori interi come valori booleani (0 per falso, !0 per vero).

Scrivi email per il tutor dei corsi
Scrivi email per l'amministratore del sito

Torna all'indice del corso
Ultima modifica: 06/04/2010