CORSO DI LAUREA IN INGEGNERIA ELETTRICA, CHIMICA e MATERIALI Informatica B, C anno accademico 2010-2011 Prof. Danilo ARDAGNA Prima Prova in Itinere – 4.5.2011 Durata 2h Valutazioni 1 (4) ____ 2 (3) ____ 3 (3) ____ 4 (3) ____ 5 (4) ____ 6 (4) ____7 (4) ____ 8 (4) ____ 9 (4) ____ Cognome ______________________________________________________________________________ Nome _________________________________________________________________________________ Matricola _________________________Firma ________________________________________________ Si ricorda che non è possibile consultare libri o appunti. - 1 - punti 4 Si consideri il seguente frammento di codice in linguaggio C: #include <stdio.h> main(){ int int int int i=0; x=2; y=1; *p; while(i<8){ if(i%2==0){ p=&x; x=y+2; y=i+3; (*p)=(*p)+2; } if (i%3==0){ p=&y; (*p)++; } printf("%d %d %d\n",i,x,y); i++; } } indicare l’output della printf per tutte le iterazioni effettuate dal costrutto while. 2 - 2 - punti 3 Si vuole creare un programma per la gestione degli amici simile a Facebook. Definire in C le strutture necessarie per memorizzare le informazioni relative ad un utente, ovvero nickname, nome, data di nascita (non sono ammesse stringhe per questa informazione) e sesso (maschio o femmina). In aggiunta, ogni utente avrà un elenco di amici (altri utenti) e un elenco di gruppi a cui è iscritto. Ogni gruppo dovrà gestire informazioni riguardo al nome, il link della pagina e l'elenco di utenti iscritti al gruppo. Si definiscano a priori le dimensioni massime delle stringhe nome e link; il massimo numero di amici, di gruppi e di iscritti ad un gruppo. - 3 - punti 3 Dati due numeri A,B rappresentati in modulo e segno, si convertano in complemento a 2 e se ne faccia la somma indicando se si è verificato overflow. Riportare oltre al risultato, tutti i passaggi. A: 10101010 B: 00110101 - 4 - punti 3 Calcolare la tabella della verita’ per l’espressione A AND (B OR C) - 5 - punti 4 Descrivere brevemente come viene organizzata la memoria per la rappresentazione di vettori e matrici nei programmi C. - 6 - punti 4 Fornire prototipo e definizione della funzione strlen che riceve come parametro in ingresso una stringa e ne restituisce la lunghezza. Si ricorda che in C le stringhe sono rappresentate come array di char il cui ultimo elemento convenzionale è il carattere null ’\0’. - 7 - punti 4 Fornire prototipo e definizione della funzione strcat che riceve come parametri in ingresso due stringhe s1 ed s2 e restituisce nel parametro s3 la stringa ottenuta concatenando s1 con s2. Si supponga che all’atto della chiamata s3 sia esistente e sia di lunghezza sufficiente a contenere la concatenazione delle due stringhe. - 8 - punti 4 Fornire prototipo e definizione della funzione strcmp che riceve come parametri in ingresso due stringhe s1 ed s2 e restituisce -1 se s1 precede in ordine lessicografico s2, 1 in caso contrario e 0 se le due stringhe sono uguali. - 9 - punti 4 Fornire prototipo e definizione della funzione issubstr che riceve come parametri in ingresso due stringhe s1 ed s2 e restituisce 1 se s2 è sottostringa propria di s1 (le due stringhe non sono cioè uguali), 2 se le stringhe sono uguali e 0 in tutti gli altri casi. 2