• Non ci sono risultati.

Laboratorio di programmazione

N/A
N/A
Protected

Academic year: 2021

Condividi "Laboratorio di programmazione"

Copied!
5
0
0

Testo completo

(1)

Laboratorio di programmazione

Lezione XI

Tatiana Zolo

tatiana.zolo@libero.it

1

(2)

S

TRUTTURE DATI

:

LA PILA

La pila (o stack) è un’astrazione che permette la memorizzazione ed il recupero di valori secondo una politica LIFO (last-in-first-out).

Le due operazioni fondamentali in una pila sono:

• push: inserisce un nuovo valore in testa;

• pop: elimina l’ultimo valore immesso.

B C A

push D →

B C A D

pop →

B C A

pop →

B C

(3)

E

SERCIZI

1. Implementare la seguente classe “Pila” usando l’allocazione dinamica della memoria (new e delete). Fissare un numero max di elementi.

class Pila { public:

Pila();

~Pila();

void push(int x);

int pop();

bool empty() const;

unsigned int capacita() const;

unsigned int num_elementi() const;

private:

int* A;

int top; };

Usare le eccezioni. (pila.cpp)

ESERCIZI 3

(4)

E

SERCIZI

2. Riscrivere la classe “Pila” aggiungendo la possibilità di raddoppiare la capacità della pila qualora venga fatta

un’operazione di push su pila piena. Realizzare quanto chiesto con un metodo privato della classe, raddoppia(), invocato all’interno del metodo push(). (pila_dinamica.cpp)

(5)

E

SERCIZI

3. Scrivere un programma che legga una sequenza di espressioni

aritmetiche da file e, utilizzando una pila di char, sia in grado di dire se le parentesi tonde di ogni espressione letta sono bilanciate e coerenti.

Fornire come output la sequenza di espressioni seguite dal messaggio

“Errata” qualora le parentesi non siano bilanciate e coerenti. Esempio:

((4 + 3) ∗ 2) + 7 (1 + (2 ∗ 3)

Errata

(1 + (2 ∗ 3))

2 ∗ (3 + 5) + 7 ∗ (2 + 4)) Errata

2 ∗ (3 + 5) + 7 ∗ (2 + 4) (bilancia_parentesi.cpp)

ESERCIZI 5

Riferimenti

Documenti correlati

[r]

4 Sezioni e viste impalcato rampa entrata - scala 1:50 Sezioni travi, traversi e pile rampa entrata - scala 1:50 Piante e sezioni fondazioni rampa entrata - scala 1:50 Piante, viste

2) Scalpellatura e rimozione zone cls ammalorato in fase di rigonfiamento o distacco ove necessario, pulizia delle superfici per eliminare residui di polvere, bonifica delle

IMPORTANTE: Utilizzare una funzione per creare la lista, un'altra per stamparla e una terza per stampare la sottolista di

• mette il flag di stato del nick a connesso e crea una FIFO, se non esiste già, il cui nome corrisponde al nick specificato nel messaggio, questa FIFO

This example assumes that TESTFILE is a file with a few lines of data written to it using the Write # statement; that is, each line contains a string in quotations and a

o implementare una funzione virtuale nella classe base implementata nelle classi derivate (con output). o implementare una funzione virtuale nella classe base non implementata

SPICE, al fine di definire la “convenzione di segno” della tensione per il generatore di tensione, contrassegna con il riferimento del simbolo più ( + ) il morsetto relativo al