• Non ci sono risultati.

CORSO di LAUREA in INGEGNERIA delle TELECOMUNICAZIONI

N/A
N/A
Protected

Academic year: 2021

Condividi "CORSO di LAUREA in INGEGNERIA delle TELECOMUNICAZIONI"

Copied!
1
0
0

Testo completo

(1)

U N I V E R S I T À D E G L I S T U D I D I P I S A F A C O L T À D I I N G E G N E R I A

CORSO di LAUREA in INGEGNERIA delle TELECOMUNICAZIONI

ESAME DI FONDAMENTI DI INFORMATICA - SIMONCINI – 30/05/2002 - C++

1. Un hotel dispone di M piani e a ciascun piano vi sono N (N<=10) camere.

Un tale hotel può essere rappresentato mediante una matrice H di dimensione MxN a valori booleani, dove l’elemento H(i,j) vale T se la j- esima camera del i-esimo piano è occupata, F se è libera. Si definisca una classe hotel assumendo che le possibili operazioni siano le seguenti:

 hotel(): costruttore che inizializza un hotel con tutte le camere non occupate ;

 ok=prenota(int p): occupa una camera al piano p (se ve ne è almeno una non occupata) e restituisce T, restituisce F se non vi sono camere libere al piano p;

 libera(int id_camera):riceve in ingresso un numero intero che identifica una camera e la rende libera. Si tenga presente che l’ultima cifra di id_camera rappresenta il numero di camera e le restanti cifre identificano il piano dove la camera è ubicata;

 n = piani_al_completo(): restituisce il numero di piani dell’hotel che hanno tutte le N camere occupate.

Risultati e Soluzione del compito:http://www.iei.pi.cnr.it/~glami/elenco-compiti.htm

(2)

U N I V E R S I T À D E G L I S T U D I D I P I S A F A C O L T À D I I N G E G N E R I A

CORSO di LAUREA in INGEGNERIA delle TELECOMUNICAZIONI 2. Siano dati due file matricole1.txt e matricole2.txt ciascuno contenente un insieme di numeri di matricola. Si scriva una funzione ok=confronta() che confronta i due file e che restituisce T se essi contengono esattamente gli stessi numeri di matricola (non importa la loro posizione nel file), F altrimenti.

3. Dato un file non vuoto elenco_numeri.dat che contiene un insieme di interi, si scriva una funzione num_in_lista(l) che riceve in ingresso il puntatore l ad una lista. Al termine della funzione l punterà ad una lista circolare ciascun elemento della quale contiene un numero letto dal file.

4. Dati i numeri decimali A=89, B=-65 e C=132, si determini il minimo numero di bit necessari per rappresentare contemporaneamente i suddetti numeri in complemento a due e se ne dia la rappresentazione.

Utilizzando poi lo stesso numero di bit, si esegua l’operazione D=A-B e si dica se il risultato è o no significativo

Punteggio:

Es.1 Es.2 Es.3 Es.4

10 10 10 3

1.

// hotel.h const int N=8;

const int M=16;

class hotel {

bool H[M][N];

public:

hotel() ;

bool prenota(int p) ; void libera (int id_camera);

int piani_al_completo ();

}

// hotel.cc

#include “hotel.h”

hotel::hotel()

{ for (int i=0; i<M; i++) for(int j=0; j<N; j++) H[i][j]=F;}

bool hotel::prenota(int p) {

if(p>=M) { cout<< “valore errato\n”;

return F; } for(int i=0, i<N; i++)

if(H[p][i]==F) { h[p][i]=T;

return T; } return F; }

Risultati e Soluzione del compito:http://www.iei.pi.cnr.it/~glami/elenco-compiti.htm

(3)

U N I V E R S I T À D E G L I S T U D I D I P I S A F A C O L T À D I I N G E G N E R I A

CORSO di LAUREA in INGEGNERIA ELETTRONICA

void hotel::libera (int id_camera) { int piano;

int num_camera;

num_camera = id_camera%10;

piano = id_camera/10;

H[piano][num_camera]=F;

}

int hotel::piani_al_completo() { int cont=0;

for (int i=0; i<M; i++) {

for (int j=0; j<N; j++) if(H[i][j]==F) V=F;

if(V==T) cont++;

V=T; } return cont; } 2.

#include <fstream.h>

bool contronta( ) { fstream f1, f2;

int m1, m2;

int cont2=0;

int cont1=0;

bool V2;

f1.open(“matricole1.txt”, ios::in);

f2.open(“matricole2.txt”, ios::in);

while(f2>> m2) cont2++;

f2.close();

while(f1>>m1) {

cont1++:

f2.open(“matricole2.txt”, ios::in);

V2=F;

while (f2>>m2) {

if (m1 == m2) { V2=T;

break; } }

f2.close();

if(!V2) return F;

}

f1.close();

f2.close();

if(cont1==cont2) return T;

return F; }

3.

(4)

U N I V E R S I T À D E G L I S T U D I D I P I S A F A C O L T À D I I N G E G N E R I A

CORSO di LAUREA in INGEGNERIA ELETTRONICA

#include <fstream.h>

void num_in_lista(elem *& elem lista) {

fstream leggi ; int numero ; elem * aux;

elem *ultimo;

leggi.open(“elenco_numeri.dat”, ios::in);

leggi>>numero;

lista=new elem;

lista->info=numero;

lista->next=0;

ultimo=lista;

while(leggi>>numero) {

aux=new elem, aux->info=numero, aux->next=0;

ultimo->next=aux;

ultimo=aux;

}

ultimo->next=lista;

}

Riferimenti

Documenti correlati

Un file chiamato dati.txt contiene per ciascuna riga una stringa di lunghezza massima 24 caratteri che rappresenta il nome di uno studente e un valore intero che

Un parcheggio per automobili è rappresentabile mediante un array P a valori binari dove ciascun elemento dell’array rappresenta un posto auto nel parcheggio e

Si scriva una funzione booleana scegli_sala(int n, int p) che cerca nel file la sala che contenga almeno n persone e il cui costo di affitto sia minimo (comunque inferiore a

La gestione della fila al banco del check-in di un aeroporto è organizzato mediante il seguente criterio: i passeggeri vengono accettati secondo un ordine cronologico,

Scrivere una funzione cerca_estremi() che legge il file e stampa sul monitor il numero più grande e quello più piccolo contenuti in esso.. Si scriva una funzione rendi_pari(l)

Si scriva una funzione raggruppa() che costruisce un nuovo file F3.dat che contiene tutti i valori pari contenuti in F1.dat e F2.dat e, a seguire, tutti i

Dati due array B1 e B2 di dimensione N a valori booleani, si scriva una funzione booleana unione(B1, B2) che riceve in ingresso i due array e costruisce un nuovo array B3

Scrivere una funzione int missing() che confronta i due file e restituisce il numero di caratteri omessi in T2.txt.. Sia data una lista l semplice a valori interi composta