Esercitazione sul for in C++

Esercitazione sul for in C++

Proponiamo in questa lezione un’esercitazione sul for in C++, al fine di apprendere meglio il funzionamento di questo costrutto.

Primo esercizio – Esercitazione sul for in C++

Scrivi i dieci numeri pari successivi al numero intero N.

Quindi analizziamo le variabili che ci serviranno:

N – Il numero intero da prendere in input.

i – La variabile contatore da utilizzare nel ciclo for.

C – La costante che rappresenta in questo caso il valore 10.

Quindi dopo aver dichiarato le variabili, impostiamo la costante C.

Dopo chiediamo in input il numero N. Se N è dispari lo rendiamo pari semplicemente sottraendo il numero 1.

Dunque con il ciclo for calcoliamo i 10 numeri pari successivi ad N.

Ecco dunque il codice completo:

#include <iostream>
using namespace std;

int main() {
    int N, i;

    const int C = 10;

    cout << "Inserisci un numero: ";
    cin >> N;

    for (i = 0; i < C; i++) {
        if (N % 2 != 0) {
            N--;
        }
        N += 2;
        cout << N << "\t";
    }

    return 0;
}

Proponiamo un’altra esercitazione sul for in C++.


Secondo esempio

Stampare i primi X numeri dispari successivi al numero N.

In realtà questo algoritmo è una variazione al precedente esercizio, in cui stavolta chiederemo noi quanti successivi vogliamo calcolare.

Analizziamo le variabili che ci occorrono.

N – Il numero intero da prendere in input.

i – La variabile contatore da utilizzare nel ciclo for.

X – Quanti numeri dispari visualizzare.

Dopo aver dichiarato le variabili che ci servono, chiediamo di inserire N ed X. Chiaramente in questo caso occorre fare un controllo che X sia maggiore di zero.

Poi controlliamo il numero e se è pari, lo trasformiamo in dispari sottraendo 1. Realizziamo poi un ciclo for che aggiunge 2 al numero X volte.

Ecco dunque il codice completo:

#include <iostream>
using namespace std;

int main() {
    int N, i, X;

    cout << "Inserisci un numero: ";
    cin >> N;    
    
    do { 
        cout << "Quanti successivi vuoi visualizzare?: ";
        cin >> X;
    } while (X <= 0);
    
    for (i = 0; i < X; i++) {
        if (N % 2 == 0) {
            N--;
        }
        N += 2;
        cout << N << "\t";
    }

    return 0;
}

Questa è una semplice esercitazione sul for in C++, nella prossima lezione proporrò tanti altri esempi.

Alcuni link utili

Indice argomenti linguaggio C++

1- Introduzione al linguaggio C++

2- Variabili in C++

3- Operatori di assegnazione in C++

4- Esempi in C++

5- Casting in C++

Successione di Fibonacci in C++

Convertitore decimale binario in C++

Convertitore decimale binario in C++

In questa lezione costruiremo un convertitore decimale binario in C++, al fine di convertire i numeri del sistema decimale in numeri binari.

Algoritmo per costruire un convertitore decimale binario in C++

Per realizzare questo algoritmo occorre rivedere come avviene la conversione da un sistema all’altro.

Ricordiamo dunque che per passare da un sistema decimale ad uno binario occorre dividere per 2, fino ad arrivare a 0, e considerare i resti delle divisioni.

Facciamo dunque un esempio, supponiamo di convertire il numero 38 da decimale a binario:

38:2 = 19  resto 0

19:2 = 9 resto 1

9:2 = 4 resto 1

4:2 = 2 resto 0

2:2 = 1 resto 0

1:2 = 0 resto 1

Leggendo dal basso verso l’alto si ottiene così la sequenza binaria: 100110, così come potete calcolare anche nel convertitore online che ho realizzato con JavaScript.

Dunque ragioniamo su come realizzarlo adesso in C++.

Potremmo utilizzare gli array, ma sono delle strutture che ancora non vi ho presentato, dunque oggi utilizzeremo le stringhe, lasciando la soluzione con l’array per un’altra lezione.

Le variabili che ci servono per realizzare il convertitore decimale binario in C++ sono:

int n – Che rappresenta il numero da convertire.

string b – Che rappresenta la stringa che conterrà il numero binario, derivante dalla conversione.

Dopo aver dichiarato le variabili, inizializziamo b alla stringa vuota.

Poi costruiamo il ciclo while, impostando come condizione che n sia maggiore di zero.

Quindi finché n è positivo cominciamo a dividerlo per 2, se il resto della divisione è zero allora aggiungiamo 0 all’inizio della stringa b. Altrimenti aggiungiamo 1 sempre all’inizio di b.

Abbiamo così ottenuto il nostro numero in binario.

Ecco dunque il listato in C++:

#include <iostream>
#include <string>
using namespace std;

int main() {
    int n;
    string b = "";

    cout << "Inserisci un numero decimale: ";
    cin >> n;

    while (n > 0) {
        if (n % 2 == 0)
            b = '0' + b;
        else
            b = '1' + b;
        n = n / 2;
    }

    cout << b;

    return 0;
}

Questa, come vi dicevo, è solo una possibile realizzazione del convertitore decimale binario in C++, proponete pure il vostro metodo.

Alcuni link utili

Indice argomenti linguaggio C++

1- Introduzione al linguaggio C++

2- Variabili in C++

3- Operatori di assegnazione in C++

4- Esempi in C++

5- Casting in C++

Successione di Fibonacci in C++

Esercizi con il for in C++

Esercizi con il for in C++

In questa lezione presento dei semplici esercizi con il for in C++, con lo scopo di esercitarci su quanto appreso finora.

Primo esercizio – Esercizi con il for in C++

Dati N numeri determinare il minimo, cioè il valore più piccolo tra quelli incontrati, indicandone il numero d’ordine.

Quindi definiamo le variabili che ci servono:

N – La variabile intera che rappresenta la quantità dei numeri da inserire.

min – La variabile intera che contiene il valore minimo.

i – La variabile contatore per il ciclo for. Ovviamente il contatore deve essere un intero.

pos – La variabile intera che indica il numero d’ordine del valore minimo.

Dopo avere dichiarato le variabili occorre prendere in input N e controllare che sia maggiore di zero.

Poi inseriamo il primo numero e lo assegniamo alla variabile min.

Quindi realizziamo un ciclo for per i che va da 1 a N che di volta in volta ricerca il valore minimo.

Ecco dunque il listato completo dell’algoritmo sull’esercizio con il for in C++:

#include <iostream>
using namespace std;

int main() {
    int N, min, n, pos, i;

    do {
        cout << "Quanti numeri vuoi inserire? : \t";
        cin >> N;
    } while (N <= 0);

    cout << "Inserisci un numero : \t";
    cin >> min;
    pos = 1;

    for (i = 1; i < N; i++) {
        cout << "Inserisci un numero : \t";
        cin >> n;

        if (n < min) {
            min = n;
            pos = i + 1;
        }
        cout << pos << endl;
    }
    cout << "Il minimo  e' " << min << ", numero ordine: " << pos;

    return 0;
}

Esercizio 2

Date N coppie di numeri interi contare e stampare quelle che hanno i valori l’uno l’opposto dell’altro.

Innanzitutto al solito dichiariamo le variabili che ci servono per la realizzazione del seguente algoritmo:

a, b – Variabili che rapprensentano le coppie di numeri.

N – Quantità di coppie di numeri da inserire.

i – La variabile contatore del ciclo for.

Dopo la dichiarazione delle variabili, chiediamo di inserire N e facciamo un controllo che sia maggiore di zero.

Poi con un ciclo for inseriamo le coppie di numeri e controlliamo se a=-b. Solo se questa condizione è vera stampiamo i numeri a e b.

Ecco dunque l’algoritmo completo in C++:

#include <iostream>
using namespace std;

int main() {
    int N, a, b, i;

    do {
        cout << "Quanti numeri vuoi inserire? : \t";
        cin >> N;
    } while (N <= 0);

    for (i = 0; i < N; i++) {
        cout << endl << "Inserisci il primo numero : \t";
        cin >> a;

        cout << "Inserisci il secondo numero : \t";
        cin >> b;

        if (a == -b) {
            cout << endl << "I valori sono opposti: " << a << "\t" << b << endl;
        }
    }

    return 0;
}

Queste sono solo delle possibili soluzioni agli esercizi con il for in C++, proposti in questa lezione, provate pure a trovarne delle altre.

Alcuni link utili

Indice argomenti linguaggio C++

1- Introduzione al linguaggio C++

2- Variabili in C++

3- Operatori di assegnazione in C++

4- Esempi in C++

5- Casting in C++

Successione di Fibonacci in C++

Iterazioni in C++

Iterazioni in C++

Facciamo alcuni esempi di iterazioni in C++ con il ciclo for, prima di andare avanti con gli altri argomenti.

Primo esempio – Iterazioni in C++

Stampare i primi n multipli di num, dove n e num sono interi e positivi.

Innanzitutto dichiariamo le variabili necessarie:

n – Variabile intera che rappresenta la quantità dei multipli da stampare.

num – Anche questa intera, rappresenta il numero inserito di cui si vogliono calcolare n multipli.

i – Variabile contatore per il ciclo for.

m – Rappresenta la variabile che calcola i multipli di num di volta in volta.

Dopo prendiamo in input n e num.

Quindi, facciamo un controllo con il ciclo do while, in modo tale da richiedere nuovamente l’inserimento nel caso in cui si inseriscano dei valori negativi, così come richiede il problema.

Poi, per calcolare i multipli, basta considerare che questi si ottengono moltiplicando semplicemente prima il numero per 1, poi per 2, ecc…

Facciamo adesso un esempio pratico: voglio calcolare i primi 4 multipli di 3. Quindi n = 3 e num = 4.

Allora il programma si comporterà in questo modo:

Primo multiplo 3*1 = 3;

Secondo multiplo 3*2 = 6;

Terzo multiplo 3*3 = 9;

Quarto multiplo 3*4 = 12.

Quindi basta incrementare di volta in volta la varibile i che parte da 1 fino ad arrivare a num.

Ecco quindi il listato completo dell’esempio sulle iterazioni in C++.

#include <iostream>

using namespace std;

int main() {
    int i, n, num, m;

    do {
        cout << "Inserisci un numero: ";
        cin >> num;
    } while (num <= 0);

    do {
        cout << "Inserisci quanti multipli vuoi visualizzare: ";
        cin >> n;
    } while (n <= 0);

    for (i = 1; i <= n; i++) {
        m = num * i;
        cout << m << endl;
    }

    return 0;
}


Esempio 2

Dati in input n numeri, contare quanti pari e quanti dispari sono stati inseriti.

In questo caso prendiamo in input quanti numeri inserire e li memorizziamo in una variabile n.

Inizializziamo a zero i due contatori uno per i numeri pari e uno per i dispari.

Dopo inseriamo i numeri e per ciascun numero controlliamo se è pari, utilizzando l’operatore % (modulo) che restituisce il resto della divisione, in questo caso per due.

Se il resto della divisione è zero, allora il numero è pari, quindi incrementiamo il contatore dei pari, altrimenti quello dei dispari.

Di seguito il listato completo dell’esempio con le iterazioni in C++.

#include <iostream>
using namespace std;

int main() {
    int i, cp = 0, cd = 0, n, a;

    do {
        cout << "Quanti numeri vuoi inserire?: ";
        cin >> n;
    } while (n <= 0);

    for (i = 0; i < n; i++) {
        cout << "Inserisci un numero: ";
        cin >> a;
        if (a % 2 == 0) {
            cp++;
        } else {
            cd++;
        }
    }
    
    cout << "Numeri pari: " << cp << endl;
    cout << "Numeri dispari: " << cd << endl;

    return 0;
}

In realtà avrei potuto fare a meno del secondo contatore per i numeri dispari, in quanto avrei anche potuto utilizzare una sola variabile ottenendo i numeri dispari come differenza, cioè i-cp.

Provate a modificate voi stessi l’esercizio.

Chiaramente questi sono solo dei semplici esempi realizzati con le iterazioni in C++, più avanti ne vedremo degli altri.


Alcuni link utili

Indice argomenti linguaggio C++

1- Introduzione al linguaggio C++

2- Variabili in C++

3- Operatori di assegnazione in C++

4- Esempi in C++

5- Casting in C++

Successione di Fibonacci in C++

Ciclo for in C++

Ciclo for in C++

Il ciclo for in C++ è un costrutto di controllo iterativo che offre una sintassi compatta e potente per eseguire iterazioni su un insieme di istruzioni un numero definito di volte. La sua struttura è particolarmente adatta quando si conosce esattamente il numero di iterazioni necessarie.

Il ciclo for è utilizzato per quelle istruzioni cicliche che devono essere ripetute un numero prestabilito di volte.

Sintassi del ciclo for in C++

for (Espressione1; Espressione2; Espressione3)

Istruzioni;

Dove:

Espressione1 può essere una inizializzazione di variabile o una dichiarazione (vedremo in seguito degli esempi).

Espressione2 è un’espressione booleana, il corpo del ciclo verrà dunque eseguito finché la condizione è vera. Quindi rappresenta il punto di arrivo dell’iterazione.

Espressione3 in genere è un’istruzione di incremento o decremento del contatore.

Istruzioni rappresentano quindi le istruzioni che devono essere eseguite, chiaramente può anche essere un’istruzione singola.

Dopo aver visto la sintassi del ciclo for in C++, facciamo adesso degli esempi pratici.

Esempio 1

Generiamo i numeri da 5 a 100, a step di 5, utilizzando un ciclo for.

Rifacciamo dunque gli esempi visti in precedenza con il ciclo while e il do-while, questa volta utilizzando il for.

#include <iostream>
using namespace std;

int main() {	
        int n;

	for(n = 5; n <= 100; n += 5){
		cout << n << endl;
	} 
	
	return 0;
}

Quindi Espressione1 rappresenta l’inizializzazione della variabile n che poniamo uguale a 5 ed è il primo numero che voglio stampare.

Espressione2 rappresenta il nostro test, quindi finché risulta essere vero il ciclo continua.

Espressione3 rappresenta l’incremento, in questo caso incrementiamo di 5 in quanto ci servono i numeri da 5 a 100.

Inoltre avremmo potuto anche scrivere:

for(int n = 5; n <= 100; n += 5)

dove la prima espressione rappresenta in questo modo anche una dichiarazione di variabile.

Ricordiamo anche che nel for nessuna espressione è obbligatoria, quindi si può scrivere anche in questo modo:

int n = 5;
for(; n<= 100; n += 5)


Esempio 2 di ciclo for in C++

Inserire n numeri e sommarli, utilizzando il ciclo for.

Potremmo sviluppare questo algoritmo con il seguente ciclo for:

for(; n > 0; n--)

In questo caso la condizione iniziale corrisponde ad n, quindi se ad esempio n = 3 farò queste considerazioni:

Espressione1 corrisponde a n = 3;

Espressione2 risulta vera in quanto 3 > 0 è vera;

Espressione3 decrementa la variabile n di 1.

Quindi quando n non è più maggiore di zero vuol dire che avremo inserito i nostri tre numeri.

Ecco quindi il listato completo del ciclo for in C++ per l’algoritmo della somma di n numeri.

#include <iostream>
using namespace std;

int main() {
        int n, numero, somma=0;

	cout << "Quanti numeri? ";
	cin >> n;
	
	for(; n > 0; n--){
		cout << "Inserisci il numero: ";
		cin >> numero;
		somma += numero;
	} 
	cout << "La somma e': " << somma;

	return 0;
}

In maniera simile possiamo utilizzare una variabile contatore i, che parte da 1 ed arriva ad n.

In questa soluzione sto però utilizzando una variabile in più.

Ecco dunque il listato completo della seconda soluzione all’esempio utilizzando il ciclo for in C++.

#include <iostream>
using namespace std;

int main() {
        int n, numero, somma = 0;
  
	cout << "Quanti numeri? ";
	cin >> n;
	
	for(int i = 0; i < n; i++){
		cout << "Inserisci il numero: ";
		cin >> numero;
		somma += numero;
	} 

	cout << "La somma e': " << somma;

	return 0;
}

Chiaramente questi sono solo dei semplici esempi sul ciclo for in C++, più avanti vedremo tanti altri esercizi.

Alcuni link utili

Indice argomenti linguaggio C++

1- Introduzione al linguaggio C++

2- Variabili in C++

3- Operatori di assegnazione in C++

4- Esempi in C++

5- Casting in C++

Successione di Fibonacci in C++