• Non ci sono risultati.

Programmazione e Progettazione Software Compito 20/11/2012

N/A
N/A
Protected

Academic year: 2021

Condividi "Programmazione e Progettazione Software Compito 20/11/2012"

Copied!
2
0
0

Testo completo

(1)

Programmazione e Progettazione Software Compito 20/11/2012

1) a) Supponendo che non esista la classe std::string, realizzare una classe String che permetta di:

◦ Costruire una stringa a partire da un char*

◦ Concatenare stringhe tramite operator+

◦ Svuotare la stringa

◦ Controllo della dimensione della stringa

◦ Accedere ad un carattere

◦ Stampare la stringa su uno stream con operator<<

b) Spiegare se si ritiene necessario fornire un copy costructor e operator= per la classe, se si ritiene necessario implementarli.

2) Partire dalla soluzione definita nel punto 1), creare una classe GrowingString che eredita da String aggiungendo un metodo Add ed un operator+= per aggiungere un carattere alla volta alla stringa.

3) Si realizzi una classe Dado che permetta di

◦ Lanciare il dado ed ottenere un numero tra 1 e 6

◦ Ottenere la frazione di volte che un certo numero e' stato ottenuto

4) Commentare il seguente codice trovando eventuali errori e problematiche.

#include <string>

class ListaStringhe { private:

string* stringhe;

public:

void Alloc(string* i) { i = new string[10];

}

int num;

ListaStringhe() { Alloc(stringhe);

}

void get(int i, string* str) { *str = stringhe[i];

} };

(2)

Programmazione e Progettazione Software Compito 20/11/2012

2) a) Supponendo che non esista la classe std::string, realizzare una classe String che permetta di:

◦ Costruire una stringa a partire da un char*

◦ Concatenare stringhe tramite operator+

◦ Svuotare la stringa

◦ Controllo della dimensione della stringa

◦ Accedere ad un carattere

◦ Stampare a stringa su uno stream con operator<<

b) Spiegare se si ritiene necessario fornire un copy costructor e operator= per la classe, se si ritiene necessario implementarli.

2) Partire dalla soluzione definita nel punto 1), creare una classe GrowingString che eredita da String aggiungendo un metodo Add ed un operator+= per aggiungere un carattere alla volta alla stringa.

3) Si realizzi una classe Dado che permetta di

◦ Lanciare il dado ed ottenere un numero tra 1 e 6

◦ Ottenere la frazione di volte che un certo numero e' stato ottenuto

4) Commentare il seguente codice trovando eventuali errori e problematiche.

#include <string>

class ListaStringhe { private:

string* stringhe;

public:

void Alloc(string* i) { i = new string[10];

}

int num;

ListaStringhe() { Alloc(da_comprare);

}

void get(int i, string* str) { *str = stringhe[i];

} };

Riferimenti

Documenti correlati

Per i quesiti a risposta chiusa: SEGNARE nella tabella riportata in questa pagina, in modo incontrovertibile, la lettera corrispondente alla risposta scelta per ognuna delle domande;

I contenuti delle singole discipline sono stati individuati dai singoli docenti nell’ambito dei programmi ministeriali in base ai criteri di essenzialità, di

Dal punto di vista cognitivo, in base alle prime osservazioni, la classe si presenta eterogenea, infatti, è possibile individuare un gruppo formato da alunni dotati di

I contenuti delle singole discipline sono stati individuati dai singoli docenti nell’ambito dei programmi ministeriali in base ai criteri di essenzialità, di

Si consideri l’insieme N dei numeri naturali ed il linguaggio usuale dell’aritmetica L Ar = {+, ∗, 0, 1} con l’uguaglianza come unico predicato.. Esprimere formalmente le

Sia N Ar il modello standard ell’aritmetica e si supponga di conoscere che i programmi logici del primo ordine (“fol-programs”) costituiscano un linguaggio di

Dati due vertici qualunque x,y esiste sempre un cammino da x a y, passando per esempio per un vertice z di lunghezza pari (tali vertici sono infatti adiacenti a tutti gli altri):

„ Il metodo String substring(int inizio, int fine) della classe String crea e restituisce un nuovo oggetto String composto dai caratteri della stringa su cui il metodo è