ESAME DI FONDAMENTI DI INFORMATICA - SIMONCINI – 9/9/99 - C++
1. Un
parcheggio può essere rappresentato mediante una matrice NxM, ciascun elemento
della quale rappresenta un posto auto. Il valore di ciascun elemento della
matrice indica se il corrispondente posto auto é libero oppure occupato. Si
definisca una classe Parking assumendo che le operazioni possibili siano le
seguenti:
- Parking (); inizializza il parcheggio in modo tale che tutti I posti auto siano
liberi
– ok=Entrata(); determina se esiste almeno un posto
auto libero, se sì lo occupa e restituisce true altrimenti restituisce false
– Uscita (x,y); rende libero il posto auto corrispondente alla posizione
x,y nella matrice
– n=Quanti ();
restituisce il numero dei posti auto liberi
2.
Il file concorrenti.txt contiene informazioni riguardanti un concorso di
bellezza, é composto da tre colonne separate da caratteri di tabulazione e ogni
riga corrisponde ad una concorrente. La prima colonna contiene il numero
assegnato alla concorrente (intero
positivo), la seconda colonna il nome (al più 15 caratteri), la terza l’età. Si
scriva una funzione stampa_età
(num) che riceve in ingresso il numero di una concorrente, ricerca tale
numero nel file e, se lo trova, stampa sul monitor il nome e l’età
corrispondenti. Si assuma che il file sia ordinato in base al numero.
3. Si scriva una funzione tot=tot_lung (ls) che accetti in ingresso il puntatore ad una lista di punti nello spazio cartesiano (x,y) e restituisca la lunghezza della spezzata corrispondente.
4. Data la seguente mappa di Karnaugh si determini il valore delle uscite “non specificate” in modo da ottenere la forma minima ottimale.
1 |
1 |
- |
|
|
1 |
1 |
- |
10 |
10 |
10 |
3 |
// Parking.h
enum bool {F,T};
const int N=10;
const int M=20;
class Parking {
bool pianta [N][M];
public:
void Parking () {
for (int i=0; i<N; i++)
for (int j=0; j<M; j++)
pianta [I][j] = F; }
bool Entrata ();
void Uscita (int x, int y) {
pianta [x][y] = F;}
int Quanti ();
}
//Parking.cc
#include “Parking.h”
bool Parking:: Entrata () {
bool spazio = F;
int i =0;
int j;
while ((I<N) && (spazio ==F)) {
j=0;
while ((j<M) && (spazio == F))
{
if (pianta[I][j]) { pianta [i][j] = F;
spazio = T;
}
j++;}
i++;}
return spazio;}
int Parking::Quanti () {
int num=0;
for (int i=0; i<N; i++)
for (int j=0; j<M; j++)
if (pianta [i][j]) num++;
return num;
}
#include <fstream.h>
enum bool
{F; T};
void concorso (int numero) {
fstream f;
int num, eta;
char nome [15];
bool continua = T;
f.open (“concorrenti.txt”, ios::inn);
while ((!f.eof()) && (continua)) {
f >> num >> nome >> eta;
if (num == numero) {
cout << nome << eta;
continua = F;}
else if (num > numero) { cout << “Concorrente non inscritta”;
continua =F;}}
if (f.eof()) cout << “Concorrente non iscritta”;
}
# include <math.h>
struct point { double x;
double y;
point *pun}
double tot_lung (point *s)
{
double tot=0;
double xc,yc;
double a,b;
if (s==0) return 0;
xc = s->x;
yc = s->y;
s = s->pun;
while (s!=0) {
a = (s->x-xc) * (s->
x-xc);
b = (s->y-yc) *
(s->y-yc);
tot +=sqrt(a+b);
xc = s->x;
yc = s->y;
s=s->pun; }
return tot;
}