Esercizio
Acquisire due numeri interi nelle variabili A, B ed effettuare la somma dei numeri compresi nell'intervallo [A;B] che risultano essere negativi o maggiori di 100.
(Le parentesi quadre chiuse indicano che si tratta di un intervallo chiuso e pertanto nella somma occorre considerare anche gli estremi A e B.)
Esempio di esecuzione n. 1:
Inserire due numeri interi: -3 6
La somma e': -6
Esempio di esecuzione n. 2:
Inserire due numeri interi: -3 102
La somma e': 197
Svolgimento
#include <stdio.h>
#include <stdlib.h>
int main()
{
int A, B, i, somma;
printf("Inserire due numeri interi: ");
scanf("%d %d", &A, &B);
somma=0;
for (i=A; i<=B; i++){
if (i<0 || i>100)
somma+=i;
}
printf("La somma e': %d\n", somma);
return 0;
}
Commento
Prestare attenzione all'allineamento del programma (il termine corretto è indentazione), cioè agli spazi inseriti prima delle istruzioni per rendere più leggibile il programma.
Prima di entrare nel ciclo è necessario inizializzare le variabili utilizzate nel ciclo stesso. E' buona norma, per leggibilità, effettuare le inizializzazioni subito prima di iniziare il ciclo.
Nel caso del for l'indice è inizializzato nella parentesi.
────══════♦☆♦══════────
Esercizio
Acquisire due numeri interi nelle variabili N, M con N<M.
Se la condizione non è rispettata richiedere nuovamente l'inserimento dell'input.
Stampare la sequenza
N M N+1 M-1 N+2 M-2 ...
La sequenza termina quando N+i>M-i. Questi termini non sono inclusi nella sequenza.
Esempio di esecuzione n. 1:
Inserire due numeri interi: 3 10
3 10 4 9 5 8 6 7
Esempio di esecuzione n. 2:
Inserire due numeri interi: -3 5
-3 5 -2 4 -1 3 0 2 1 1
Svolgimento
#include <stdio.h>
#include <stdlib.h>
int main()
{
int N, M, i;
printf("Inserire due numeri interi: ");
scanf("%d %d", &N, &M);
for (; !(N<M); ){
printf("Input errato. Ripetere l'inserimento: ");
scanf("%d %d", &N, &M);
}
for (i=0; N+i<=M-i; i++){
printf("%d %d ", N+i, M-i);
}
return 0;
}
Commento
Notare che il primo for è utilizzato senza includere nella parentesi il primo e il terzo parametro.
A tutti gli effetti questa istruzione è equivalente alla seguente
while (!(N<M){
Nel secondo for in parentesi è presente sia il primo parametro per l'inizializzazione dell'indice, sia il terzo parametro che ne definisce l'incremento.
────══════♦☆♦══════────
Esercizio
Implementare un programma che richiede all'utente di inserire un numero naturale minore di 80 e realizza una sorta di screensaver che riproduce ciclicamente all'infinito l'immagine riportata in basso.
Il numero inserito dall'utente corrisponde al numero di caratteri che devono essere visualizzati sul rigo più lungo.
Esempio di esecuzione:
Inserire N (con N<80): 5
:
::
:::
::::
:::::
::::
:::
::
:
::
:::
::::
:::::
::::
:::
::
:
Svolgimento:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int main()
{
int N, i, k;
printf("Inserire N (con N<80): ");
scanf("%d", &N);
while (1){
for (i=1; i<=N; i++){ //Immagine crescente fatta da N righe
for (k=1; k<=i; k++) //La riga i-ma e' fatta da i caratteri
printf(":");
printf("\n"); //Fine riga corrente
Sleep(100);
}
for (i=N-1; i>1; i--){ //Immagine decrescente di N-2 righe
//manca riga da N e da 1 car
for (k=1; k<=i; k++) //La riga i-ma di i caratteri
printf(":");
printf("\n"); //Fine riga corrente
Sleep(100);
}
}
return 0;
}
Sito: 7ecnologie
Sezione: 08. C language
Capitolo: 05. Esercizi svolti
Paragrafo: 08. for
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. printf e scanf - 02. Swap di variabili - 03. if - 04. Numeri pari - 05. if/else - 06. while - 07. Controllo dell'input - 08. for - 09. Operatore % - 10. Funzioni - 11. Tipo float - 12. Tipo char - 13. Stringhe - 14. File