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

Documenti analoghi
Gestione delle stringhe in C

Esercizio 1. Esercizio 2

Problem solving elementare su dati vettoriali

Cos è una stringa (1) Stringhe. Leggere e scrivere stringhe (1) Cos è una stringa (2) DD Cap. 8 pp KP Cap. 6 pp

Esercizi di programmazione in C

RICERCA DI UN ELEMENTO

I puntatori e l allocazione dinamica di memoria

Concetti chiave. Struct. Variabili strutturate: il tipo struct Elementi di una struttura typedef e struct Array di strutture

Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Caratteri e stringhe Esercizi risolti

IL CONCETTO DI FILE. È illecito operare oltre la fine del file.

Fondamenti di Informatica 2

4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste

Gestione di files Motivazioni

Lab 11 Gestione file di testo"

Gestione dei File in C

Le stringhe. Le stringhe

Breve riepilogo della puntata precedente:

Esempio: Array di struct

Creare una funzione float square(float x). La funzione deve restituire il quadrato del parametro x.

Programmazione I / Informatica generale Prova scritta 11 Giugno 2008

Algoritmi di Ricerca. Esempi di programmi Java

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Funzioni. Il modello console. Interfaccia in modalità console

Input/output in C e in C++

Esercitazione 10. Strutture ed Enumerazioni. Allocazione dinamica di memoria

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Gestione dei File. dischi nastri cd

Esame di Informatica Generale 25 giugno 2010 Professori: Carulli, Fiorino, Mazzei

Compito di Fondamenti di Informatica

Esercizi svolti durante le ore di Informatica e Sistemi automatici nelle classi del Liceo Scientifico Tecnologico del Liceo Milli di Teramo

Politecnico di Milano - Facoltà di Ingegneria INFORMATICA A - Corso per allievi GESTIONALI - Prof. C. SILVANO A. A. 2001/ febbraio A

3. Terza esercitazione autoguidata: progetto gestione voli

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO V Indice

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

puntatori Lab. Calc. AA 2007/08 1

Linguaggio C - Stringhe

Introduzione al Linguaggio C

Introduzione alla programmazione in C

Esame del 3 febbraio 2010

Trattamento delle STRINGHE in C(++)

MAGAZZINO.CPP January 2, 2008 Page 1

Alcune regole di base per scrivere un programma in linguaggio C

MPI è una libreria che comprende:

Esercizio 1. Esercizio 1

RICORSIONE - schema ricorsivo (o induttivo) si esegue l'azione S, su un insieme di dati D, mediante eventuale esecuzione di

I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002

Fondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 5 di Giovedì 15 Luglio 2010 tempo a disposizione 2h30'

Prova di recupero di Informatica B Corsi di Laurea in Ingegneria Meccanica prof. Francesco Amigoni 20 febbraio 2004

Programmazione 1 A.A. 2015/2016

Appello di Informatica B

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Quotazione compareto( ) Quotazione piurecente( ) Quotazione Quotazione Quotazione non trovato count( )

Corso di Fondamenti di Informatica

INFORMATICA E PROGRAMMAZIONE PROF. M. GIACOMIN ESPERIENZA IN AULA: ELABORAZIONE DI IMMAGINI A COLORI IN LINGUAGGIO C

Esercitazione 7. Procedure e Funzioni

CARATTERI E STRINGHE Caratteri e stringhe Funzioni della libreria standard I/O Funzioni della libreria di gestione delle stringhe

ESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 13 Settembre COGNOME E NOME: MATRICOLA: Civile Ambiente e Territorio

Ricorsione. Corso di Fondamenti di Informatica

ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia)

Header. Unità 9. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi

Lezione 9: Strutture e allocazione dinamica della memoria

ESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 27 Gennaio 2015

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 21 Dicembre 2006

Laboratorio di programmazione

Sistemi Operativi (M. Cesati)

Fondamenti di Informatica T. Linguaggio C: File

TUTORATO di LINGUAGGI I

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore.

La selezione binaria

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2011

Esercizi d esame svolti di programmazione in C e selezione di domande d esame

Inizializzazione, Assegnamento e Distruzione di Classi

Verifica che una grammatica sia Context Free nel GrammaReader

Alcuni strumenti per lo sviluppo di software su architetture MIMD

ESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 10 Settembre 2013

IPC System V. Code di messaggi

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE

Alfabeto ed elementi lessicali del linguaggio C

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a giugno 2013

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Indirizzo di una funzione. Puntatori a funzioni. Definizione di variabili. Definizione di variabili

Esame di Informatica Generale 25 giugno 2012 Professori: Carulli, Fiorino. Docente Risultati Scritto Fiorino Carulli

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

Tipi di dato-prima parte

Programmazione Orientata agli Oggetti in Linguaggio Java

ZZZ01 Esercizi Vari. Esercizi per preparazione alla prova pratica di laboratorio

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a luglio 2013

Esame di Informatica Generale 25 giugno 2012 Professori: Carulli, Fiorino. Docente Risultati Scritto Fiorino Carulli

UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita

Il comando provoca il salvataggio dello stato e la terminazione dell esecuzione.

File di testo e file binari Directory

Soluzioni degli esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

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 (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 */ struct tipo_posto 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 */ struct tipo_posto char stato[6]; /* occupazione del posto */ struct tipo_sala int n_file; int n_posti_per_fila; struct tipo_posto posto[10][20]; /* posti */ struct tipo_proiezioni proiezione; /* proiezioni */

struct tipo_cinema int n_sale; struct tipo_sala sala[12]; Esercizio 2 (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 calcola_somma (struct sequenza seq) int i, somma = 0; for ( ) somma += ; return somma; int calcola_valore (struct numero num) int i, valore = 0; for ( ) valore = valore * + ; return valore; int valore_cifra (char cifra) if ( ) return cifra - '0'; return toupper (cifra) ; int calcola_somma (struct sequenza seq) int i, somma = 0; for (i = 0; i < seq.lunghezza; i++) somma += calcola_valore (seq.num[i]); return somma; 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;

int valore_cifra (char cifra) if (cifra >= '0' && cifra <= '9') return cifra - '0'; return toupper (cifra) - 'A' + 10; Esercizio 3 (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): struct posto unsigned char occupato; char targa [LMAXTARGA]; struct posto 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 (struct tipo_posto deposito [NPIANI][NFILE_PER_PIANO][NPOSTI_PER_FILA]) int i, n_liberi_totali, n_occupati_nel_piano; n_liberi_totali = NPIANI * NFILE_PER_PIANO * NPOSTI_PER_FILA; for (i = 0; i < NPIANI; i++) n_liberi_totali -= posti_occupati_nel_piano (deposito, i); for (i = 0; i < NPIANI; i++) n_occupati_nel_piano = posti_occupati_nel_piano (deposito, i); if (n_occupati_nel_piano <= n_liberi_totali (NFILE_PER_PIANO * NPOSTI_PER_FILA - n_occupati_nel_piano)) return i; int posti_occupati_nel_piano (struct tipo_posto 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].occupato) contatore++; return contatore;

Esercizio 4 (2 punti) Si consideri la seguente funzione: int op (int *p) (*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 = 2 * ++n; [ ] m = ++n + ++n; [ ] m = 2 * (n+1); [ ] m = (n+1) + (n+1); [ ] m = 2 * n++; [ ] m = n++ + n++; 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 (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 Esercizio 7 (2 punti) Completare l istruzione di lettura da tastiera: double x; char y[10]; int z; scanf ("%lf %c %d",, 0, ); y[1] = '\0'; double x; char y[10]; int z; scanf ("%lf %c %d", &x, &y[0],&z); y[1] = '\0';