Pila con un vettore: push & pop

Un bambino colleziona numeri. E' un po' strano, vero? In ogni caso li colleziona e vuole salvare tutti i numeri che trova da qualche parte. Ogni tanto vuole eliminare dalla pila l'ultimo che ha inserito se l'ha aggiunto per sbaglio.

Come può fare?

Può utilizzare una pila! Una pila è un array che viene inizializzato vuoto. Ogni volta che si vuole si aggiunge un elemento o si elimina l'ultimo elemento inserito.

Dato il codice seguente, rispondi alle seguenti domande:

  1. Cosa stampano le varie istruzioni marcate con un asterisco?
  2. Modifica il programma in modo che abbia un menu e nel menu ci siano le seguenti voci
    • inserisci un numero
    • togli un numero
    • stampa elenco
    • togli un numero nella posizione inserita (es: 2,3,7,1,3 -> tolgo il numero nella posizione 2 e diventa: 2,3,1,3)
    • aggiungi un numero nella posizione inserita (es: 2,3,1,3 -> agg. il numero 8 nella posizione 2 e diventa: 2,3,8,1,3)

Quindi carica su moodle un piccolo programma che risponde al punto 2.

#include <iostream>
using namespace std;

int inserisciNumero(int elenco[], int n) { // push, inserisce un elemento
	cout << "Inserisci il numero numero " << n+1 << " ";
	cin >> elenco[n++];
	return n;
}

void stampaElenco(int elenco[], int n) { // show list
	for (int i=0; i<n; i++) {
		cout << elenco[i] << " ";	
	}	
	cout << endl;
}

int estraiNumero(int elenco[], int n) { // pop, rimuove l'ultimo elemento 
	cout << elenco[n-1] << endl;
	return n-1;
}

int main() {
	int elenco[100];
	int valoriInseriti = 0;	
	valoriInseriti = inserisciNumero(elenco, valoriInseriti);
	valoriInseriti = inserisciNumero(elenco, valoriInseriti);
	stampaElenco(elenco, valoriInseriti); // *
	valoriInseriti = inserisciNumero(elenco, valoriInseriti);
	stampaElenco(elenco, valoriInseriti); // *
	valoriInseriti = estraiNumero(elenco, valoriInseriti); // *
	stampaElenco(elenco, valoriInseriti); // *
	cout << valoriInseriti; // *
	return 0;
}

Maggiori informazioni su cplusplus

Buon lavoro!