Il 0% ha trovato utile questo documento (0 voti)
20 visualizzazioni6 pagine

Simulazione 09.01.17

Il documento è una simulazione d'esame per il corso di Programmazione M-Z, contenente domande su codice C e strutture dati. Ogni quesito richiede di analizzare il codice e indicare cosa stampa o identificare errori di sintassi. Inoltre, vengono presentati esercizi per implementare funzioni che gestiscono strutture dati concatenate per rappresentare testo.

Caricato da

Pietro Pantani
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
20 visualizzazioni6 pagine

Simulazione 09.01.17

Il documento è una simulazione d'esame per il corso di Programmazione M-Z, contenente domande su codice C e strutture dati. Ogni quesito richiede di analizzare il codice e indicare cosa stampa o identificare errori di sintassi. Inoltre, vengono presentati esercizi per implementare funzioni che gestiscono strutture dati concatenate per rappresentare testo.

Caricato da

Pietro Pantani
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 6

Nome

Cognome
Matricola

Esame di Programmazione M-Z (Parte 1)


9 Gennaio 2017 (Simulazione d’esame)
Ingegneria e Scienze Informatiche
A.A. 2016-2017

Quesito 1. Indicare cosa stampa il seguente codice.

1 #i n c l u d e < stdio .h >


2

3 #d e f i n e M (x , y ) ( x *2)/ y
4
5 i n t main () {
6 printf ( " % d \ n " ,M (1+2 ,1+2));
7
8 return 0;
9 }

Risposta

Quesito 2. Indicare cosa stampa il seguente codice.

1 #i n c l u d e < stdio .h >


2
3 i n t main () {
4 i n t x = 0 , y = 1;
5

6 ( - - x && --y ) || ( - - x || --y );


7 printf ( " % d % d \ n " ,x , y );
8 return 0;
9 }

Risposta
Quesito 3. Indicare cosa stampa il seguente codice.

1 #i n c l u d e < stdio .h >


2
3 i n t main () {
4 i n t x = 0 , y = 1;
5
6 i f ((++ x && ++ y ) || (++ x || ++ y ))
7 printf ( " % d \ n " ,x + y );
8 else
9 printf ( " % d \ n " ,x - y );
10 return 0;
11 }

Risposta

Quesito 4. Indicare cosa stampa il seguente codice.

1 #i n c l u d e < stdio .h >


2
3 i n t main () {
4 int i;
5
6 f o r ( i = 6; i ; i -= 3)
7 printf ( " % d \ n " ,i ++);
8
9 return 0;
10 }

Risposta

Quesito 5. Indicare cosa stampa il seguente codice.

1 #i n c l u d e < stdio .h >


2
3 i n t x = 1;
4
5 i n t f () { return ++ x ; }
6
7 i n t main () {
8 printf ( " % d \ n " ,f ()+ x );
9 return 0;
10 }

Risposta
Quesito 6. Indicare cosa stampa il seguente codice.

1 #i n c l u d e < stdio .h >


2

3 void f ( unsigned i n t x ) {
4 i f ( x != 0)
5 f (x -1);
6 printf ( " % d \ n " ,x );
7 }
8

9 i n t main () {
10 f (4);
11 return 0;
12 }

Risposta

Quesito 7. Indicare gli errori di sintassi nel seguente codice

1 struct x {
2 int x;
3 s t r u c t x * next ;
4 };
5
6 s t r u c t x * create ( i n t y ) {
7 struct x x;
8 x->x = y;
9 x - > next = 0;
10 return & x ;
11 }

Risposta

Quesito 8. Indicare gli errori di sintassi nel seguente codice.

1 i n t main () {
2 i n t A [] = {1 ,2 ,3} , B [] = {4 ,5 ,6} , * tmp ;
3 tmp = A ;
4 A = B;
5 B = tmp ;
6 return 0;
7 }

Risposta
Quesito 9. Indicare cosa stampa il seguente codice.

1 #i n c l u d e < stdio .h >


2
3 s t r u c t node {
4 int x;
5 s t r u c t node * next ;
6 };
7
8 s t r u c t node * create ( i n t x ) {
9 s t r u c t node n ;
10 n.x = x;
11 n . next = NULL ;
12 return & n ;
13 }
14
15 i n t main () {
16 s t r u c t node * n = create (1);
17 printf ( " % d \ n " ,n - > x );
18 return 0;
19 }

Risposta

Quesito 10. Indicare cosa stampa il seguente codice.

1 #i n c l u d e < stdio .h >


2 #i n c l u d e < stdlib .h >
3
4 i n t main () {
5 i n t * p = ( i n t *) malloc ( s i z e o f ( i n t ));
6 i n t ** q = ( i n t **) malloc ( s i z e o f ( i n t *));
7
8 *q = p;
9 * p = 1;
10

11 printf ( " % d % d \ n " ,*p ,** q );


12 return 0;
13 }

Risposta
Esame di Programmazione M-Z (Parte 2)
9 Gennaio 2017 (Simulazione d’esame)
Ingegneria e Scienze Informatiche
A.A. 2016-2017

Utilizziamo una struttura dati concatenata per rappresentare testo di caratteri:


• Righe differenti di testo sono rappresentate tramite una lista concatenata sem-
plice (principale) in cui ogni nodo contiene un campo line, che punta ad una lista
di caratteri, e un campo next, che punta alla riga successiva.
• Ogni riga di testo è rappresentata tramite una lista concatenata semplice (se-
condaria) in cui ogni nodo contiene un campo c, che memorizza un singolo carattere
di testo, e un campo next, che punta al nodo/carattere successivo.
Ad esempio, il seguente testo
M’illumino

d’immenso
viene memorizzato nel seguente modo:
T

M ' i l l u m i n o

NULL

NULL

d ' i m m e n s o

NULL

NULL

Le strutture che implementano tale struttura dati sono define nel seguente modo:
1 s t r u c t line {
2 char c ;
3 s t r u c t line * next ;
4 };
5
6 s t r u c t text {
7 s t r u c t line * line ;
8 s t r u c t text * next ;
9 };

Da notare che:
• La variabile T che punta all’intera struttura è di tipo struct text *.
• La lista concatenata di testo non contiene caratteri newline: le righe differenti di
testo sono gestite tramite la lista concatenata principale (struct text).
• Una riga vuota è rappresentata con un nodo di tipo struct text il cui campo line
punta a NULL.
Esercizio 1. Implementare il seguente prototipo della funzione read text() che trasfor-
ma il contenuto testuale di un file nella rappresentazione tramite liste concatenate.

1 s t r u c t text * read_text ( char * file );

La funzione prende come argomento una stringa che rappresenta il nome del file e ritorna
un puntatore al primo nodo della struttura struct text. La funzione ritorna NULL se
la creazione della struttura non va a buon fine (mancanza di memoria, file non leggibile
ecc). Non è strettamente necessario gestire i casi di allocazione non riuscita.

Ricordiamo quali sono le funzioni per la gestione di file:

• Apertura di un file in sola lettura: FILE *in = fopen(file,"r");

• Chiusura di un file: fclose(in);

• Verifica di raggiungimento della fin del file: feof(in);

• Lettura di un carattere da file: fgetc(in);

Esercizio 2. Implementare la seguente funzione print text() che stampa il testo


memorizzato nella struttura concatenata.

1 void print_text ( s t r u c t text * T );

Se la struttura dati non contiene nulla (i.e. T == NULL), la funzione non stampa nulla.

Potrebbero piacerti anche