PROGRAMMIAMO
C++ - Inversione di una serie
Un problema apparentemente semplice

Consideriamo un problema apparentemente molto semplice: si vuole acquisire da tastiera una serie di numeri e quindi visualizzare la serie in ordine inverso, dall'ultimo numero acquisito fino al primo.

Supponiamo per semplicità che i numeri acquisiti siano tutti positivi. In questo caso potremmo decidere di terminare la serie di valori fornendo un numero negativo (ad esempio -1). Tale valore non fa parte della serie, ma serve solo per indicarne la fine: pertanto non dovrà essere visualizzato dal programma. Il funzionamento del programma eseguito potrebbe essere il seguente:

Digita il numero 1 della serie: 22
Digita il numero 2 della serie: 17
Digita il numero 3 della serie: 40
Digita il numero 4 della serie: 36
Digita il numero 5 della serie: -1
I numeri visualizzati al contrario sono: 36 40 17 22

Per realizzare questo programma abbiamo bisogno di memorizzare la serie di valori, in modo da poterla poi visualizzare in ordine inverso. Qui però sorge il problema: le variabili semplici non sono indicate per questo scopo. Infatti:

L'unico modo per risolvere il problema usando le variabili è fissare rigidamente il numero di valori inseriti e scrivere un programma di questo genere:

int a, b, c, d;

cout<<"Fornisci il numero 1 della serie: ";
cin>>a;

cout<<"Fornisci il numero 2 della serie: ";
cin>>b;

cout<<"Fornisci il numero 3 della serie: ";
cin>>c;

cout<<"Fornisci il numero 4 della serie: ";
cin>>d;

cout<<"I numeri visualizzati al contrario sono "<<d<<" "<<c<<" "<<b<<" "<<a;

Si tratta evidentemente di una soluzione assai poco flessibile ed efficiente! Se volessimo aggiungere un numero in più alla nostra serie, dovremmo aggiungere un'altra coppia di cout-cin al nostro programma...

Vedremo fra poco come si può risolvere in modo più elegante il nostro problema. Ma prima dobbiamo introdurre un nuovo "tipo di variabile", detto vettore.

link precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it