01. Es. svolto: sequenza ciclica
Traccia:
Punto 1:
Stampare a video 100 numeri riproducendo ciclicamente la sequenza
0 1 2 3 4 5 6
Punto 2:
Stampare una ulteriore sequenza di 120 numeri riproducendo ciclicamente la sequenza
1 2 3 4 5
Strategia:
L'aritmetica modulare consente di ottenere le sequenze richieste in modo molto semplice.
Punto 1:
Siccome nella prima sequenza sono presenti 7 cifre differenti (da 0 a 6), occorre applicare l'operatore modulo 7.
Osserviamo infatti che:
0 % 7 vale 0
1 % 7 vale 1
2 % 7 vale 2
3 % 7 vale 3
4 % 7 vale 4
5 % 7 vale 5
6 % 7 vale 6
7 % 7 vale 0
8 % 7 vale 1
9 % 7 vale 2
10 % 7 vale 3
11 % 7 vale 4
12 % 7 vale 5
13 % 7 vale 6
14 % 7 vale 0
15 % 7 vale 1
...
Punto 2:
Siccome nella seconda sequenza sono presenti 5 cifre differenti (da 1 a 5), occorre applicare l'operatore modulo 5. La sequenza che potremo ottenere in questo modo sarà del tipo
0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 ...
Per essere coerenti con quanto richiesto nella traccia sarà necessario aumentare di 1 il risultato.
Osserviamo infatti che:
(0 % 5) + 1 vale 1
(1 % 5) + 1 vale 2
(2 % 5) + 1 vale 3
(3 % 5) + 1 vale 4
(4 % 5) + 1 vale 5
(5 % 5) + 1 vale 1
(6 % 5) + 1 vale 2
(7 % 5) + 1 vale 3
(8 % 5) + 1 vale 4
(9 % 5) + 1 vale 5
(10 % 5) + 1 vale 1
(11 % 5) + 1 vale 2
(12 % 5) + 1 vale 3
(13 % 5) + 1 vale 4
(14 % 5) + 1 vale 5
(15 % 5) + 1 vale 1
...
Svolgimento:
#include <stdio.h>
int main()
{
int i, val;
printf("Sequenza N. 1.\n\n");
i=0;
while (i<100){
val = i % 7;
printf("%d ", val);
i++;
}
printf("\n\n\nSequenza N. 2.\n\n");
i=0;
while (i<120){
val = (i % 5) + 1;
printf("%d ", val);
i++;
}
return 0;
}
Sito: 7ecnologie
Sezione: 08. C language
Capitolo: 02. Introduzione al C
Paragrafo: 07. Operatore modulo
Approfondimento: 01. Es. svolto: sequenza ciclica
Indice dei capitoli: 00. Risorse - 01 Ambiente di sviluppo - 02. Introduzione al C - 03. Le librerie - 04. Tutorial - 05. Esercizi svolti - 98. Esercizi
Indice dei paragrafi: 01. Hello World - 02. Variabile di tipo int - 03. Input da tastiera - 04. Controllo condizionale if - 05. Operatori logici - 06. Ciclo while - 07. Operatore modulo - 08. Array - 09. Ciclo for - 10. Ciclo do/while - 11. Variabili di tipo float - 12. Funzione random() - 13. Impostazione del set di caratteri - 14. Definizione di funzioni - 15. Passaggio di parametri: gli array - 16. Variabili: visibilità e durata - 17. Il tipo char - 18. I file - 19. Funzioni matematiche
Indice degli approfondimenti: 01. Es. svolto: sequenza ciclica