• 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 – 13/01/2005 - C++

1. Un parcheggio per automobili è rappresentabile mediante un array P a valori binari dove ciascun elemento dell’array rappresenta un posto auto nel parcheggio e il corrispondente valore indica se il posto auto è libero oppure no.

Si definisca una classe Parcheggio assumendo che le possibli operazioni siano:

- Parcheggio(n): costruttore che crea un parcheggio con n (n=100 per default) posti auto inizialmente liberi.

- assegna(i): se il posto auto corrispondente all’indice i è libero, lo rende occupato restituendo true, altrimenti restituisce false.

- libera(i): rende libero il posto auto corrispondente all’indice i

- numero_liberi(): restituisce il numero dei posti auto liberi nel parcheggio;

- ~Parcheggio(): distruttore.

2. Dato un file esterno numeri.dat non vuoto, si scriva una funzione crea_SM() che calcola la media aritmetica m dei valori contenuti in numeri.dat e crea un nuovo file numeri_SM.dat composto dai valori di numeri.dat superiori a m.

3. Data una lista semplice circolare a valori interi l, si scriva una funzione inserisci(l) che riceve in ingresso la lista l e esegue le seguenti azioni:

- conta il numero (n) di elementi contenuti in l;

- se non esiste alcun elemento in l con campo informativo uguale a n, ne crea uno e lo inserisce in testa.

4. Dati i numeri decimali A=78, B=99 e C=-30, 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’operazione D=B-C e si discuta se il risultato ottenuto è o no significativo.

Punteggio:

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

10 9 11 3

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 ELETTRONICA

1.

//Parcheggio.h class Parcheggio {

int *P;

int dim ; public:

Parcheggio(int n);

Parcheggio();

boolean assegna(int i);

void libera(int i);

int numero_liberi();

~Parcheggio();

}

//Parcheggio.cpp

#include “Parcheggio.h”

Parcheggio::Parcheggio(int n)

{ dim=n;

P=new int[n];

for(int h=0; h<n; h++) P[h]=0; }

Parcheggio::Parcheggio()

{ dim=100;

P=new int[100];

for(int h=0; h<100; h++) P[h]=0;}

boolean Parcheggio::assegna(int i) { if(P[i] ==0) { P[i]=1;

return true; } }

return false;

}

void Parcheggio::libera(int i) { P[i]=0; }

int Parcheggio::numero_vuoti() { int cont=0;

for (int j=0; j<dim; j++) if(P[j]==0) cont++;

return cont;

}

Parcheggio:: ~Parcheggio() { delete [] P;}

2.

#include <fstream.h>

void crea_SM() { fstream f, g;

f.open(“numeri.dat”, ios::in);

(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

int num, m;

int cont=0;

n=0;

while(f>>n)

{ cont+=n;

num++;

}

m=cont/num;

f.close(),

f.open(“numeri.dat”, ios::in);

g.open(„numeri_SM.dat“, ios::out);

while(f>>num)

{ if(num>m) g<<num<<”\n”;

}

f.close();

g.close();

}

3.

void inserisci (elem *&l) { elem *aux, *aux1;

if (l==0) {

aux=new elem;

aux->info=0;

aux->next=aux;

l=aux;

return ; } int cont=1;

for(aux=l; aux->next==l; aux=aux->next) cont++;

aux1=l;

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

if(aux1->info==cont) return;

aux1=aux1->next;

}

aux1=new elem;

aux1->info=cont;

aux1->next=l;

aux->next=aux1;

l=aux1;

}

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

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

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

Sia dato un file non vuoto azienda.dat contenente su ciascuna riga le seguenti informazioni: la ragione sociale di una azienda (stringa di al più 28 caratteri), il

Si scriva una funzione elimina(l) che riceve in ingresso la lista l ed elimina dalla lista l’elemento con campo informativo massimo.. Utilizzando poi lo stesso