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

Scritto-04 09 17

Il documento contiene domande e risposte relative a un esame di programmazione, con focus su codice C e strutture dati. Vengono presentati vari quesiti che richiedono di analizzare e correggere codice, oltre a implementare funzioni per gestire strutture dati concatenate. Inoltre, si richiede di rimuovere caratteri specifici e unire righe di testo in una sola linea.

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)
7 visualizzazioni6 pagine

Scritto-04 09 17

Il documento contiene domande e risposte relative a un esame di programmazione, con focus su codice C e strutture dati. Vengono presentati vari quesiti che richiedono di analizzare e correggere codice, oltre a implementare funzioni per gestire strutture dati concatenate. Inoltre, si richiede di rimuovere caratteri specifici e unire righe di testo in una sola linea.

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 1B)


4 Settembre 2017
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 BEGIN {
4 #d e f i n e END }
5 #d e f i n e INT i n t
6 #d e f i n e FOR (a , b ) f o r ( a =0; a <= b ; a ++)
7 #d e f i n e PRINT ( a ) printf ( " % d \ n " ,a )
8
9 INT main ()
10 BEGIN
11 INT i ;
12 FOR (i ,10);
13 BEGIN
14 PRINT ( i );
15 END
16 END

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 = -1 , y = 0 , z = 1;
5 printf ( " % d % d % d \ n " ,!x , !y , ! z );
6 return 0;
7 }

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 int x;
5
6 printf ( " % d \ n " ,! x );
7
8 return 0;
9 }

Risposta

Quesito 4. Indicare l’errore di sintassi nel seguente codice.

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


2

3 i n t main () {
4 i n t i = 0;
5
6 while ( i <= 10)
7 printf ( " % d \ n " ,i ++);
8

9 do
10 printf ( " % d \ n " ,i );
11 while ( i ++ <= 10)
12
13 return 0;
14 }

Risposta

Quesito 5. Indicare cosa stampa il seguente codice.

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


2
3 i n t main () {
4 int a;
5 printf ( " % d % d \ n " ,a -a , a + a );
6 return 0;
7 }

Risposta
Quesito 6. Indicare cosa stampa il seguente codice.

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


2
3 int f( int x) {
4 i f ( x > 1 || x < -1)
5 return 0;
6 else
7 return f ( x +1)+ f (x -1)+1;
8 }
9

10 i n t main () {
11 printf ( " % d \ n " ,f (0));
12
13 return 0;
14 }

Risposta

Quesito 7. Indicare l’errore di sintassi nel seguente codice

1 s t r u c t x { i n t x ;} x = {0};
2 s t r u c t y { i n t x ;} y = x ;

Risposta

Quesito 8. Indicare cosa stampa il seguente codice.

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


2 #i n c l u d e < string .h >
3
4 i n t main () {
5 char p [] = " ciao " ;
6 i n t n = strlen ( p );
7
8 printf ( " % c % c \ n " ,p [1] , p [n -1]);
9
10 return 0;
11 }

Risposta
Quesito 9. Indicare cosa stampa il seguente codice.

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


2 #i n c l u d e < string .h >
3
4 char * f ( char * p ) {
5 i n t n = strlen ( p );
6 *( p +n -1)= ’ \0 ’;
7 return p +1;
8 }
9
10 i n t main () {
11 char p [] = " ciao " ;
12
13 printf ( " % s \ n " ,f ( p ));
14
15 return 0;
16 }

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 < string .h >
3
4 char * f ( char (* p )[5]) {
5 i n t n = strlen (* p );
6 *(* p +n -1)= ’ \0 ’;
7 return * p +1;
8 }
9
10 i n t main () {
11 char p [] = " ciao " ;
12
13 printf ( " % s \ n " ,f (& p ));
14
15 return 0;
16 }

Risposta
Esame di Programmazione M-Z (Parte 2)
4 Settembre 2017
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 doppiamente con-
catenata (principale) in cui ogni nodo contiene un campo line, che punta ad una
lista di caratteri, un campo next, che punta alla riga successiva, e un campo prev
che punta alla riga precedente.
• Ogni riga di testo è rappresentata tramite una lista doppiamente concatenata
(secondaria) in cui ogni nodo contiene un campo c, che memorizza un singolo carat-
tere di testo, un campo next, che punta al nodo/carattere successivo, e un campo
prev, che punta al nodo/carattere precedente.
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

NULL

NULL

d ' i m m e n s o

NULL

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 s t r u c t line * prev ;
5 };
6
7 s t r u c t text {
8 s t r u c t line * line ;
9 s t r u c t text * next ;
10 s t r u c t text * prev ;
11 };

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 remove char() che
rimuove dalla struttura ogni occorrenza di un carattere specificato.

void remove_char ( s t r u c t text *T , char c );

Ad esempio, il seguente testo:


Testo di prova
per il compito

dopo la chiamata remove chars(T,’o’),viene trasformato in:


Test di prva
per il cmpit

Esercizio 2. Implementare la seguente funzione single line() che posiziona tutto il


testo nella struttura su una singola linea (ogni altra riga deve essere eliminata). Ogni riga
concatenata deve essere separata da uno spazio.
void single_line ( s t r u c t text * T );

Ad esempio, il seguente testo:


Testo di prova
per il compito

dopo la chiamata single line(T),viene trasformato in:


Testo di prova per il compito

Precisazioni:

• Al termine della procedura la struttura deve contenere una sola riga, i.e. un solo
nodo di tipo struct text.

• Non è strettamente necessario ma consigliabile aggiungere uno spazio tra la conca-


tenazione di due righe.

Potrebbero piacerti anche