Matricola Nome Cognome Aula Fila (dalla cattedra) Posto (dalla porta)

Documenti analoghi
Matricola Nome Cognome Aula Fila (dalla cattedra) Posto (dalla porta)

Matricola Nome Cognome Aula Fila (dalla cattedra) Posto (dalla porta)

int cerca_posto_libero (struct tipo_treno treno, int tratta_inizio, char tipo, int tratta_fine, int *p_ncarrozza, int *p_nposto)

a = 6; b = 7; c = a b; [ ] il risultato è indefinito [ ] c = 12 [ ] c = 13 [X] c = 14 a = 8; b = 9; c = a b;

Esercizio 4 (4 punti)

Che risultato si ottiene al termine dell esecuzione del seguente frammento di codice?

Esercizio 1 (17 punti)

Esercizio 1 (15 punti)

Esercizio 1: media di numeri reali (uso funzioni e struct)

Lab 09 Gestione file di testo

Esercizio 1 (15 punti)

Esercizio 1. Esercizio 1 - Soluzione

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

Esercitazione di Reti degli elaboratori

Lezione 8: Stringhe ed array multidimensionali

Esercitazioni di Programmazione II. Chiara Petrioli

Lezione 22: Input/Output e Files

Programmazione di base

Strutture dati. Operatori di incremento e decremento. Strutture di dati. Strutture di dati. ++ e -- Esempi. Vettori e matrici.

Stringhe e tipi di dati strutturati

Esercitazioni di Fondamenti di Informatica - Lez. 5 30/10/2018

Soluzioni seconda prova intermedia del 30 gennaio 2006 temi 1 e 2. Siano date le seguenti definizioni di costanti e tipi in linguaggio C:

Informatica 1. Corso di Laurea Triennale in Matematica. Gianluca Rossi

Esercizi. Filtraggio

PROVA SCRITTA DEL CORSO DI CORSO DI LAUREA IN INGEGNERIA BIOMEDICA ED ELETTRICA 9/6/2008

Relativamente agli esempi sopra riportati, al termine dell esecuzione della funzione il file di uscita dovrà contenere quanto riportato a lato.

Scrittura formattata - printf

in alternativa Quanto spazio occupa in memoria una variabile di tipo struct? dipende...

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prima prova in itinere COGNOME E NOME. 13 novembre 2006 RIGA COLONNA MATRICOLA

Caratteri e stringhe

Programmazione Appello di febbraio 2019

Programmazione di base

Lab 08 Stringhe e strutture

1 (4) 2 (4) 3 (12) 4 (6) 5 (6)

Introduzione alla programmazione in linguaggio C

Linguaggio C. Vettori, Puntatori e Funzioni Stringhe. Università degli Studi di Brescia. Prof. Massimiliano Giacomin

Linguaggio C - Array. Array: tipo nome_array[num_elementi]

Puntatori e array. Violetta Lonati

Struttura dei programmi e Variabili

Vettori di caratteri. Caratteri e stringhe. Stringhe in C. Vettori di caratteri. char saluto[10] ; B u o n g i o r n o 4. Esempio.

Lezione 8 Struct e qsort

Sommario FONDAMENTI DI INFORMATICA 1. Il tipo FILE. Passaggio da standard I/O. LINGUAGGIO C Gestione dei file

LEZIONE 1 LE BASI DEL LINGUAGGIO C

Lezione 11: Liste a Puntatori e Input/Output

Esercizio 1: funzione con valore di ritorno di tipo puntatore

Esercitazione 2. Variabili e Tipi Input e Output Assegnamenti Il comando if-else

Corso di Laurea Ingegneria Elementi di Informatica. Iterazione. C. Limongelli. Iterazione

Introduzione al linguaggio C Puntatori

Le Funzioni in C. Fondamenti di Informatica Anno Accademico 2010/2011. Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia

Capitolo 16 Iterazione

ESERCIZIO 1 ESERCIZIO 2

- matrici - stringhe - file (lettura/scrittura, di testo/binari) - strutture, puntatori - allocazione dinamica della memoria (malloc)

Funzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3)

Il presente plico contiene 3 esercizi e 2 domande e deve essere debitamente compilato con cognome e nome, e numero di matricola.

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Programmazione di base

Programmazione (imperativa)

int ninv; /* numero di inventario */

Caratteri e stringhe

Gestione delle stringhe in C

Caratteri e stringhe

Lab 15 Gestione file di testo

Informatica per Statistica Riassunto della lezione del 21/10/2011

Caratteri e stringhe. Vettori di caratteri. Il tipo stringa Terminatore nullo Input/output di stringhe Politecnico di Torino 1

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Appello del 17 Febbraio 2009 COGNOME E NOME RIGA COLONNA MATRICOLA

Lab 08 Stringhe e strutture

Strategie di programmazione

Strutture di Controllo Condizionali e Operatori Logici e Relazionali

Aggregati di dati eterogenei: il tipo struct. Esercizi risolti

Lab 10 Gestione file di testo

Politecnico di Milano - Dipartimento di Elettronica e informazione Prof. Mauro Negri

Sistemi Operativi (M. Cesati)

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }

C: panoramica. Violetta Lonati

Allocazione dinamica memoria

NOTA: I codici proposti sono solo una delle possibile soluzioni, non sono da intendersi come unica soluzione possibile o corretta

Politecnico di Milano Facoltà di Ingegneria Civile, Ambientale e Territoriale. Informatica B [079904]

Esercizio 1 (14 punti)

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prima prova in itinere COGNOME E NOME. 13 novembre 2006 RIGA COLONNA MATRICOLA

Informatica B Esercitazione 3

Operazioni su file di caratteri

Introduzione al C. Lezione 4 Allocazione dinamica della memoria. Rossano Venturini. Pagina web del corso

Esercizio 1: parole nel testo

Introduzione al linguaggio C Primi programmi

Input/Output Input = clienti.bin, n (funzione richiesta dall utente), Cognome (per il punto 1) Output = dati_cliente, top10, sconti

Iterazione. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa E06. C. Limongelli Dicembre 2011

Iterazione. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa E07. C. Limongelli Novembre 2007

Linguaggio C - Stringhe

Stringhe. Concetti chiave

Input/Output. Lettura e scrittura Caratteri e Stringhe: Terminale e file. Input/output. caratteri stringhe formattato ascii binari

Stringhe. In C le stringhe ben formate sono in realtà array di caratteri terminati sempre da un carattere speciale, \0, detto anche

Laboratorio di Informatica I

Stringhe e allocazione dinamica della memoria

ELEMENTI DI INFORMATICA. Linguaggio C

Transcript:

Università degli Studi di Udine Corsi di laurea in Ing. Elettronica / Gestionale Fondamenti di programmazione / Inform. 1 23 novembre 2012 - Prova intermedia Matricola Nome Cognome Aula Fila (dalla cattedra) Posto (dalla porta) Esercizio 1 (8 punti) Un deposito multipiano per autoveicoli è rappresentato dal vettore tridimensionale così definito (si assumano già definite le costanti intere LMAXTARGA, NPIANI, NFILE_PER_PIANO, NPOSTI_PER_FILA): unsigned char libero; char targa [LMAXTARGA]; deposito [NPIANI][NFILE_PER_PIANO][NPOSTI_PER_FILA]; Si scriva la funzione piano_liberabile che riceve in ingresso il vettore rappresentante il deposito e che restituisce l indice del primo piano (partendo dal piano terra, di indice zero) che è possibile liberare, cioè il cui numero di veicoli è minore o uguale alla somma dei posti liberi negli altri piani. Se nessun piano risulta liberabile, la funzione deve restituire -1. int piano_liberabile ( deposito [NPIANI][NFILE_PER_PIANO][NPOSTI_PER_FILA]) int i, n_liberi_totali, n_liberi_nel_piano; n_liberi_totali = 0; for (i = 0; i < NPIANI; i++) n_liberi_totali += posti_liberi_nel_piano (deposito, i); for (i = 0; i < NPIANI; i++) n_liberi_nel_piano = posti_liberi_nel_piano (deposito, i); if (NFILE_PER_PIANO * NPOSTI_PER_FILA - n_liberi_nel_piano <= n_liberi_totali - n_liberi_nel_piano) return i; int posti_liberi_nel_piano ( deposito [NPIANI][NFILE_PER_PIANO][NPOSTI_PER_FILA], int piano) int contatore, i, j; contatore = 0; for (i = 0; i < NFILE_PER_PIANO; i++) for (j = 0; j < NPOSTI_PER_FILA; j++) if (deposito[piano][i][j].libero) contatore++; return contatore;

Esercizio 2 (2 punti) Si consideri la seguente funzione: int op (int *p) (*p) += 1; return 2 * (*p); Date due variabili intere n e m, quale/i delle seguenti espressioni è/sono equivalente/i a m = op(&n);? [ ] m = ++n + ++n; [ ] m = n++ + n++; [ ] m = 2 * (n+1); m = 2 * ++n; [ ] m = 2 * n++; [ ] m = (n+1) + (n+1); Esercizio 3 (5 punti) Si consideri un programma per gestire dei cinema multisala. Ogni cinema multisala dispone al massimo di 12 sale, tutte di capacità differente ma mai superiore a 200 posti disposti su un massimo di dieci file da massimo venti posti ciascuna. In ciascuna sala viene proiettato un solo film per un numero massimo di cinque proiezioni. Si completi la definizione della struttura dati sotto riportata che rappresenta uno di tali cinema multisala in un dato giorno. Tale struttura contiene il numero di sale effettivamente presenti e, per ciascuna sala, il numero di posti, il titolo del film (massimo 40 caratteri) e la sequenza di orari (ore e minuti) dell inizio delle proiezioni. Per ciascun posto è rappresentato, per ciascuna delle proiezioni, l informazione libero, prenotato o venduto mediante le lettere L, P e V, rispettivamente, in una stringa lunga al massimo cinque caratteri (uno per proiezione: per esempio in una sala che prevede quattro proiezioni l occupazione di un posto può essere rappresentata dalla stringa LVLP ). struct tipo_orario int ora; int minuti; struct tipo_proiezioni /* titolo del film */ /* numero di proiezioni */ /* orari */ char stato ; /* occupazione del posto */ struct tipo_sala int n_file; int n_posti_per_fila; /* posti */ /* proiezioni */ struct tipo_cinema

struct tipo_orario int ora; int minuti; struct tipo_proiezioni char titolo[41]; /* titolo del film */ int n_proiezioni; /* numero di proiezioni */ struct tipo_orario orario[5]; /* orari */ char stato[6]; /* occupazione del posto */ struct tipo_sala int n_file; int n_posti_per_fila; posto[10][20]; /* posti */ struct tipo_proiezioni proiezione; /* proiezioni */ struct tipo_cinema int n_sale; struct tipo_sala sala[12]; Esercizio 4 (6 punti) Una sequenza (di lunghezza massima 100) di numeri interi positivi scritti in basi diverse (comprese tra 2 e 16) è rappresentata da stringhe ASCII. La struttura che le memorizza è la seguente: struct numero int base; char rappr[64]; struct sequenza int lunghezza; struct numero num[100]; Si completino le seguente funzioni, che permettono di calcolare la somma dei valori della sequenza. int valore_cifra (char cifra) if ( ) return cifra - '0'; return toupper (cifra) ; int calcola_valore (struct numero num) int i, valore = 0; for ( ) valore = valore * + ; return valore; calcola_media (struct sequenza seq) int i, somma = 0; for ( ) somma += ; return somma / (double) i;

int valore_cifra (char cifra) if (cifra >= '0' && cifra <= '9') return cifra - '0'; return toupper (cifra) - 'A' + 10; int calcola_valore (struct numero num) int i, valore = 0; for (i = 0; num.rappr[i]!= '\0'; i++) valore = valore * num.base + valore_cifra (num.rappr[i]); return valore; double calcola_media (struct sequenza seq) int i, somma = 0; for (i = 0; i < seq.lunghezza; i++) somma += calcola_valore (seq.num[i]); return somma / (double) i; Esercizio 5 (4 punti) La seguente funzione rappresenta una delle possibili implementazioni della funzione di libreria strncmp, che confronta due stringhe per un massimo di n caratteri. Alcune righe del codice, però, sono riportate in più varianti contenenti errori lessicali, sintattici e semantici. Per ciascun gruppo di alternative si indichi la riga corretta. CORRETTA int mystrncmp (char s[]; char t[]; int n) [ ] int mystrncmp (char *s[], char *t[], int n) [ ] int mystrncmp (char *s, char *t, int n) int mystrncmp (char *s; char *t; int n) [ ] int i = 0; while (i<n s[i]!='\0' t[i]!='\0') [ ] while (i<n && s[i]!='\0' && t[i]!='\0') while (i<n && (s[i]!='\0' t[i]!='\0')) [ ] if (s[i] <> t[i]) [ ] if (s[i] = t[i]) [ ] if (s[i] == t[i]) [ ] if (s[i]!= t[i]) return t[i]-s[i]; return t-s; [ ] return i; [ ] return s[i]; [ ] return t[i]; [ ] i+1; [ ] i += 1; i-1; [ ] --i; [ ]

if (i >= n) return 0; if (s[i] = '\0') [ ] if (s[i] > '\0') [ ] if (s[i] == '\0') if (s[i] < '\0') [ ] return 1; int mystrncmp (char s[], char t[], int n) int i = 0; while (i<n && s[i]!='\0' && t[i]!='\0') if (s[i]!= t[i]) return t[i]-s[i]; i++; if (i >= n) return 0; if (s[i] == '\0') return 1; Esercizio 6 (2 punti) Completare l istruzione di lettura da tastiera: int x; double y; char z[5]; scanf ("%lf %c %d",, 0, ); z[1] = '\0'; int x; double y; char z[5]; scanf ("%lf %c %d", &y, &z[0],&x); z[1] = '\0'; Esercizio 7 (3 punti) Cosa stampa il seguente frammento di codice? int i, l; char s[6]; strcpy (s, "prova"); for (i=l=strlen(s)/2; i>0; i--, l++) s[i]=s[l]; printf ("%s\n", s); R.: pvova