09. Operatore %

Esercizio

Acquisire due numeri interi nelle variabili A, B e stampare in successione la cifra delle unità (senza segno) di tutti i numeri compresi nell'intervallo [A; B].

Esempio di esecuzione n. 1:


Inserire due numeri interi: -3 18

3 2 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8


Esempio di esecuzione n. 2:


Inserire due numeri interi: 21 26

1 2 3 4 5 6


Svolgimento


#include <stdio.h>

#include <stdlib.h>

int main()

{

int i, ii, A, B;

printf("Inserire due numeri interi: ");

scanf("%d %d", &A, &B);

printf("\n");

for (i=A; i<=B; i++){

if (i<0)

ii=-i;

else

ii=i;

printf("%d ", ii%10);

}

return 0;

}

Commento

Nel ciclo for la variabile ii è utilizzata per considerare i numeri compresi nell'intervallo [A; B] senza segno.

In fase di stampa la cifra delle unità è calcolata considerando il resto della divisione per 10. Ad esempio:

27:10 = 2 con resto 7 (che coincide con la cifra delle unità).


────══════♦☆♦══════────


Esercizio

Acquisire due numeri interi nelle variabili N, T verificando che siano rispettate le seguenti relazioni:

0<N<20 e N<T<10N

Nel caso le relazioni non siano entrambe rispettate richiedere nuovamente l'input.

Stampare una sequenza di T termini strutturata come indicato di seguito

0 1 2 ... N-1 0 1 2 ... N-1 ...

Esempio di esecuzione n. 1:


Inserire due numeri interi: -3 6

Input errato. Ripetere l'inserimento: 5 22

0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1


Esempio di esecuzione n. 2:


Inserire due numeri interi: 4 7

0 1 2 3 0 1 2


Svolgimento


#include <stdio.h>

#include <stdlib.h>

int main()

{

int N, T, i;

printf("Inserire due numeri interi: ");

scanf("%d %d", &N, &T);

while(!(0<N && N<20 && N<T && T<10*N)){

printf("Input errato. Ripetere l'inserimento: ");

scanf("%d %d", &N, &T);

}

printf("\n");

for (i=0; i<T; i++){

printf("%d ", i%N);

}

return 0;

}

Commento

Il ciclo for è strutturato per stampare T termini.

L'indice è incrementato ad ogni iterazione.

In corrispondenza della stampa, sull'indice è applicato l'operatore modulo che provvede a calcolare il resto della divisione per N.

Naturalmente il resto della divisione per N può essere un numero compreso tra 0 e N-1.


────══════♦☆♦══════────


Esercizio

Acquisire due numeri interi nelle variabili A, B e stampare tutti i numeri compresi nell'intervallo ]A; B[ che risultano essere pari o multipli di 11 .

Lo zero è considerati pari.

Esempio di esecuzione:


Inserire due numeri interi: -3 18

-2 0 2 4 6 8 10 11 12 14 16


Svolgimento


#include <stdio.h>

#include <stdlib.h>

int main()

{

int i, A, B;

printf("Inserire due numeri interi: ");

scanf("%d %d", &A, &B);

printf("\n");

for (i=A+1; i<B; i++){

if (i%2==0 || i%11==0)

printf("%d ", i);

}

return 0;

}

Commento

Per verificare la divisibilità di un numero è stato utilizzato l'operatore modulo. In particolare si è verificato che il resto della divisione fosse zero.