• 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/7/2006 - C++

1. Un ufficio postale ha un dispositivo che segnala se uno dei suoi sportelli è libero, occupato oppure chiuso. Tale dispositivo può essere rappresentato mediante un array di caratteri dove l’elemento i-esimo vale C se l’i-esimo sportello è chiuso, L se è aperto e libero, B se è aperto e occupato. Si definisca una classe posta assumendo che le possibili operazioni siano le seguenti:

 posta(n): costruttore che inizializza un dispositivo con n sportelli chiusi (n=10 per default);

 ok=Liberato(i): se lo sportello di indice i è chiuso o occupato lo rende libero e restituisce T, altrimenti restituisce F;

 ok=Occupato(i): se lo sportello di indice i è libero lo occupa e restituisce T, altrimenti restituisce F;

 n = conteggio(): restituisce in uscita il numero degli sportelli chiusi oppure occupati;

 ~posta(): distruttore;

2. Un file chiamato numeri.dat contiene un insieme non vuoto di numeri interi. Scrivere una funzione cerca_estremi() che legge il file e stampa sul monitor il numero più grande e quello più piccolo contenuti in esso.

3. Si scriva una funzione rendi_pari(l) che riceve in ingresso il puntatore ad una lista semplice a valori di tipo carattere l. La funzione conta il numero n di elementi di cui è composta l e, se n è dispari, allora viene eliminato l’elemento centrale di l, altrimenti l rimane invariata.

4. Dati i numeri decimali A=-65, B=63 e C=126, 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=A+C+B e si discuta se il risultato ottenuto è o no significativo.

Punteggio:

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

10 10 10 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

Es. 1 // posta.h

enum ind {C, B, L};

class posta { ind *D;

int N=10;

public:

posta() ; posta(int n);

bool liberato(int i) ; bool occupato (int i);

int conteggio ()

~posta() {delete [ ] D;};

}

// posta.cc

#include “posta.h”

posta::posta(int n)

{ N=n;

D = new int[N];

for (int i=0; i<N; i++) D[i]=’C’;

}

posta::posta() { D = new int[N];

for (int i=0; i<N; i++) D[i]=’C’;

}

bool posta::liberato(int i) { if (D[i]==’B’)||(D[I]==’C’))

{ D[i]==’L’;

return T; } return F;

}

bool posta::occupato(int i) {

if (D[i]==’L’) { D[i] = ‘B’;

return T; } return F;

}

int posta::conteggio() {

int cont=0;

for (int i=0; i<N;i++) if (D[I]!=’C’)

cont++;

return cont;

}

(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

Es. 2

#include <fstream.h>

void cerca_estremi() { fstream f;

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

int letto;

int max, min, cross;

f>>min;

if(f>>max);

else { cout<< “un solo valore: “<<min;

return; }

if(max<min ) { cross=max;

max=min;

min=cross;

}

while(f>>letto) {

if(letto>max) max=letto;

else if(letto<min) min=letto;

}

cout<<”massimo: “<<max<<”\nminimo: “<<min;

f.close(); }

Es. 3

void rendi_pari(elem *&l) { int cont=0;

if (l==0) return;

if(l->next==0) { delete l;

l=0;

return; } elem *aux=l;

while(aux!=0) { cont++;

aux=aux->next; } if(cont%2==0) return;

aux=l;

elem *aux1=aux->next;

for(int i=cont/2-1; i!=0; i--)

{ aux=aux1;

aux1=aux1->next; } aux->next=aux1->next;

delete aux1; }

Riferimenti

Documenti correlati

Si scriva una funzione crea_file() che legge l’ultimo valore del file numeri.dat e costruisce un nuovo file solo_maggiori.dat contenente i soli elementi di numeri.dat maggiori

Si scriva una funzione booleana incluso() che restituisce true se tutti gli elementi di F1.dat sono contenuti in F2.dat, false altrimenti.. Sia data una lista semplice circolare

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

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

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