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 – 13/02/2003 - C++
1.
La stagione di prosa di un teatro è composta daM
spettacoli. Per ogni spettacolo è possibile acquistate biglietti negliN
ordini di posto di cui il teatro dispone. Ciascun ordine di posto ha la capienza diZ
posti. La biglietteria di un tale teatro può essere rappresentata mediante un matriceB
di dimensione
NxM
a valori interi, il cui generico elementoB[i][j]
rappresenta la quantità di biglietti dell’ordine di posto
i
ancora disponibili per la vendita per lo spettacoloj.
Si definisca una classe
Botteghino
che rappresenta una biglietteria sulla quale sono possibili le seguenti operazioni: Botteghino()
: costruttore che inizializza la matrice in modo tale che nessun biglietto sia stato ancora venduto Vendita(i, j)
: effettua la vendita di un biglietto di ordine di postoi
per lo spettacolo
j
ok=abbonamento(i)
: vende un abbonamento per tutti gli spettacoli per un ordine di postoi
(effettua cioè una vendita di un biglietto di ordine di postoi
per ciascuno spettacolo della stagione). Se è possibile vendere l’abbonamento la funzione restituisceT
, restituisceF
altrimenti. n=spettacoli_esauriti()
: restituisce il numero degli spettacoli che hanno tutti gli ordini di posto esauriti.
2.
Sia dato un filenumeri.txt
composto da almenoN
righe ciascuna delle quali contieneN
valori interi. Si scriva una funzionecostruisci(A)
che riceve in ingresso un array di interi
A
e lo modifica in modo tale che il valore del generico elementoA[i]
sia uguale all’(i+1)-
esimo elemento della(i+1)
-esima riga dinumeri.txt
.3.
Sia data una lista doppia a valori interil
. Sia scriva una funzionedealloca(l)
che dealloca tutti gli elementi dil
in ordine decrescente, partendo cioè da quello con campo informativo maggiore fino a quello con campo informativo minore.4.
Dati i numeri decimaliA=111
,B=43
eC=-76
, si determini il minimo numero di bit necessari per rappresentare contemporaneamente i suddetti numeri in complemento a 2 e se ne dia la rappresentazione. Utilizzando poi lo stesso numero di bit, si esegua l’operazioneD=B-C
e si discuta se il risultato ottenuto è o no significativo.Punteggio:
Risultati e Soluzione del compito:http://www.iei.pi.cnr.it/~glami/elenco-compiti.htm
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
Es.1 Es.2 Es.3 Es.4
10 10 10 3
1.//botteghino.h const int N=5;
const int M=12;
class botteghino { int B[N][M];
public:
botteghino();
void vendita(int i, int j);
bool abbonamento(int i);
int spettacoli_esauriti();
}
//botteghino.cc
#include “botteghino.h”
#include <iostream.h>
botteghino::botteghino() { for(int i=0; i<N; i++)
for(int j=0; j<M; j++) B[i][j]=Z;
}
void botteghino::vendita(int i, int j)
{ if(B[i][j]==0) cout<<”biglietto non disponibilie\n”;
else B[i][j]--;
}
bool botteghino::abbonamento(int i) { for(int k=0; k<M; k++)
if(B[i][k]==0) { cout<<”no abbonamento\n”;
return F; }
for(intk=0; k<M; k++) B[i][k]--;
}
int botteghino::spettacoli_esauriti() { int cont=0;
bool esaurito=T;
for(int j=0; j<M; j++)
{ for(int i=0; i<N; i++)
{ if (B[i][j]!=0) esaurito=F;}
if (esaurito) cont++;
else esaurito=T;
} }
2.
#include <fstream.h>
const int N=20;
void costruisci(int A[N])
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
{
fstream f;
f.open(“numeri.txt”, ios::in);
int a_vuoto;
for(int i=0; i<N, i++)
for(int j=0; j<N; j++) {
if(i==j) f>>A[j];
else f>>a_vuoto;
} f.close();
}
3.
void dealloca(elem *&l) {if (l==0) return;
int pg;
elem *aux, *aux1;
while(l!=0)
{ aux=l;
pg=l->info;
// ricerca del massimo while(aux!=0)
{ if(aux->info > pg) { pg=aux->info;
aux1=aux;
aux=aux->next;
} }
//deallocazione dell’elemento trovato if(aux1==l) {
l=aux1->next;
l->prec=0;
delete aux1; } else if(aux1->next ==0)
{ aux1->prec->next =0;
delete aux1;
}
else {
aux1->next->prec=aux1->prec;
aux1->prec->next=aux1->next;
delete aux1;
} }}