queste sono alcune tracce d’esame che ho ricavato nei vari post su quellidiinformatica
realizzare una classe punto con coordinate x,y e costruttore di default, le funzioni da implementare per questa classe erano:
calcolare la distanza tra 2 punti---Point distance(const Point &p1,const Point &p2);
il punto medio-------------double middle(const Point &p1,const Point &p2);
di ruotare un punto nel piano (x,y) di 90 gradi---void ruota();
una classe eccezione per eventuali errori (io ad essempio ho lanciato un eccezione quando tentavo di far ruotare di 90 gradi l'origine ma cmq potevate un esempio qualunque);
overloding degli seguenti operatori:
operator>> operator<< opeeartor!= operator== operator+
All'orale ha chiesto:Composizione,operatori di >> e <<,le variabili static a cosa servono e poi non so...ok
Ragazzi l'ho fatto io ieri(tutto bene)...
La traccia era semplicissima: chiedeva una lista a puntatori(template) nella quale inserire elementi(template). Inoltre richiedeva una funzione printback() che stampasse gli elementi inseriti al contrario(dall'ultimo al primo) tramite un ordinamento ricorsivo. Il tutto, ovviamente, condito con qualche eccezione qua e la(tipo per lista vuota,inserimento errato, ecc.)
ok
Ciao, si doveva implementare una classe Pila di tipo stack a puntatori che doveva invertire una stringa di lunghezza imprecisata data in input. | Semplicemente, inserisci con push i singoli caratteri della frase letta e poi usi o il metodi print della classe stack , oppure un ciclio while per togliere dalla testa ogni singola lettera contenuta nello stack. Es:
while(stack.pop(car))
cout<<car; ok
guarda posso solo dirti che all'esame di marzo(sarebbe l'ultimo che e' stato fatto)ha dato 2 esercizi;uno riguardava l'overloading delle funzioni cin e cout in una classe complex costituita da parte reale e immaginaria;bisognava fare anche una classe di eccezioni per la classe complex,ad esempio se il numero complesso era in un formato sbagliato;il secondo esercizio era veramente banale bisognava fare una funzione per confrontare se due numeri erano uguali o diversi con l'uso di template;
ESERCIZIO 1
Scrivere un programma che soddisfi i seguenti requisiti:
1)Creare una classe Complex che contenga come dati privati parte reale e immaginaria, rappresentati col tipo intero. La classe Complex dichiari due funzioni operatore sovrapposte: una di inserimento nello stream e l’altra di estrazione dallo stream. La funzione operatore di estrazione dallo stream dovrebbe stabilire se il dato immesso è valido e, se non lo è, dovrebbe settare ios::failbit per determinare se è stato immesso un input improprio. Un input valido dovrebbe essere espresso nella forma: 3 + 8i
2)Il valore può essere negativo o positivo ed è possibile che uno dei valori possa non essere fornito. Se non è fornito viene settato a zero. Qualsiasi altra situazione eccezionale venga gestita mediante l’utilizzo di appropriate eccezioni, ossia progettando un’apposita classe di eccezioni per Complex. L’operatore di inserimento non dovrebbe essere capace di mostrare il numero complesso se immettete un dato erroneo da tastiera. Il formato dell’output dovrebbe essere identico al formato di input prima illustrato, considerando che per valori immaginari negativi deve essere stampato un segno “ – “, mentre per i positivi un segno “ + “.
3) Scrivere un opportuno main di test della classe Complex.
ESERCIZIO 2
1)Scrivere una funzione template per una funzione predicato isEqualTo, che compara i suoi due argomenti utilizzando l’operatore di uguaglianza “ == “ e restituisce true se questi sono uguali e false se sono diversi. Usare una funzione template in un programma che chiami isEqualTo e la provi su una varietà di tipi built in del linguaggio no
2)Successivamente si scriva una versione diversa del programma che chiami isEqualTo e la provi su un tipo di classi definite dall’utente, ma senza sovrapporre l’operatore di eguaglianza. Cosa succede quando si tenta di eseguire questo programma??? (commentare in un file di testo allegato al progetto)no
3)Come il punto 2), ma adesso sovrapponiamo l’operatore di uguaglianza con la funzione operator==. Cosa succede quando eseguite questo programma?? (commentare in un file di testo allegato al progetto) no
Il secondo appello consisteva in due esercizi distinti.
Per superare la prova era necessario svolgerli entrambi.
Nel primo, attraverso l'uso delle STL, si doveva implementare un programma che dato in ingresso un file sequenziale restituisse in output un elenco delle parole presenti nel file corredato dal numero di occorrenze della parola stessa. no
Il secondo esercizio richiedeva l'implementazione di un Template di classe Lista concatenata e la scrittura di una funzione che presi in input due oggetti Lista concatenata già ordinati, li collegasse tra loro, restituendo un terzo oggetto lista concatenata.
ok
Si realizzi, mediante l'utilizzo dei costrutti per la gestione di classi in C++, una pila di elementi di tipo Calciatore.
Ogni calciatore è contraddistinto dal suo nome, dal numero di presenze e dal numero di goal segnati. La classe
Pila è realizzata mediante un array statico (solo per matricole N46: template nel tipo T degli elementi, in
particolare si istanzi T nel main con la classe Calciatore).
Lo studente dovrà implementare i metodi necessari ad inserire nuovi elementi nella pila, eliminare elementi dalla
pila e stampare l'intero contenuto della pila. Lo studente, oltre a garantire una corretta gestione della memoria in
caso di inserimento di nuovi elementi, eliminazione degli stessi o distruzione dell'intera pila,dovrà inoltre
implementare quanto necessario affinché i contenuti della pila vengano completamente ricopiati in caso di costruzione per copia o assegnazione. (solo per matricole N46 e N39: la funzione di inserimento deve sollevare una eccezione nel caso di tentativo di inserimento in una pila piena).
La struttura dati Calciatore dovrà essere realizzata utilizzando il costrutto struct come segue:
struct calciatore {
char* nome;
int presenze;
int goals;
}
Si verifichi la corretta implementazione mediante il seguente programma di test (solo per matricole N46 e N39: il
presente main deve essere modificato per renderlo compatibile con la classe template e/o per prevedere la
gestione dell'errore)
int main(int argc, char *argv[]){
calciatore c1;
calciatore c2;
c1.nome=new char[30];
c2.nome=new char[30];
strcpy(c1.nome,”Francesco Totti”);
c1.presenze=4;
c1.goals=1;
strcpy(c2.nome,”Morgan De Sanctis”);
c2.presenze=4;
c2.goals=3;
//verifica funzionamento inserimento e stampa
Pila p;
p.push(c1);
p.push(c2);
p.stampa();
//verifica funzionamento pop e copia
Pila p2=p;
p.pop();
calciatore c3;
c3.nome=new char[30] ;
strcpy(c3.nome,”Iezzman”);
c3.presenze=3;
c3.goals=-2;
p2.push(c3);
cout << ”Pila originale:” << endl;
p.stampa();
*/no
Ci sono 10 categorie di persone al mondo:
quelle che capiscono il sistema binario e quelle che non lo capiscono.