• 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)

CORSO di LAUREA in INGEGNERIA delle TELECOMUNICAZIONI

ESAME DI FONDAMENTI DI INFORMATICA - SIMONCINI – 31/01/2002 - C++

1. Una banca dispone di N sportelli ed ha un indicatore che segnala se uno sportello è libero, occupato oppure chiuso. Tale indicatore 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 indicatore assumendo che le possibili operazioni siano le seguenti:

 indicatore(): costruttore che inizializza un indicatore con N sportelli chiusi;

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

 ok=Occupato(): cerca un sportello libero e se lo trova lo occupa e restituisce T, altrimenti restituisce F;

 n = conteggio(): restituisce in uscita il numero degli sportelli aperti;

 ~indicatore(): distruttore;

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

(2)

2. Sia dato un file numeri.txt contenente almeno N numeri interi. Si scriva una funzione ok=controlla(v) che riceve in ingresso un array v di N interi e che restituisce T se nessun elemento di v è contenuto in numeri.txt, F altrimenti.

3. Siano date due liste semplici a valori interi l1 e l2 non vuote ordinate in senso crescente e che non contengono al loro interno elementi ripetuti.

Si scriva una funzione l3=unisci(l1, l2) che riceve in ingresso le due liste. La funzione costruisce una nuova lista l3 anch’essa ordinata in senso crescente composta dagli elementi di l1 e l2 e la restituisce in uscita. Si consideri che gli elementi di l1 e l2 sono diversi fra loro.

4. Dati i numeri decimali A=87, B=-63 e C=121, si determini il minimo numero di bit necessario 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+c e si dica se il risultato è o no significativo

Punteggio:

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

11 8 11 3

// indicatore.h enum ind {C, B, L};

const int N=20;

class indicatore { ind *D;

public:

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

int conteggio ()

~indicatore() {dolete [ ] D;};

}

// indicatore.cc

#include “indicatore.h”

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

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

}

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

(3)

CORSO di LAUREA in INGEGNERIA ELETTRONICA

{ D[I]==’L’;

return T; } return F;

}

bool indicatore::occupato() {

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

{ D[i] = ‘B’;

return T; } return F;

}

int indicatore::conteggio() {

int n=0;

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

n++;

return n;

}

(4)

2.

#include <fstream.h>

const int N=100;

bool controlla(int v[N]) { fstream f;

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

int n;

while(f>>n) {

for(int i=0; i<N ; i++)

if (v[i] == n) { return F;

f.close();

} }

f.close();

return T;

} 3.

elem* unisci (elem *l1, elem *l2) {

elem *l3;

elem *aux;

elem * aux1, *aux2; *aux3;

aux1=l1 ; aux2=l2 ;

// creazione del primo elemento di l3 aux3=new elem ;

aux3 ->next =0;

if (aux1->info < aux2->info) { aux3->info = aux1->info ;

l3 = aux3 ;

aux1=aux1->next ; }

else

{ aux3->info = aux2->info ; l3 = aux3 ;

aux2=aux2->next ; }

//creazione del resto di l3 while(aux1 !=0 && aux2 !=0)

{

aux3=new elem ; aux3 ->next =0;

//inserimento in coda di l3 aux=l3 ;

while(aux->next = 0) aux=aux->next ; aux->next=aux3 ;

if (aux1->info < aux2->info)

(5)

CORSO di LAUREA in INGEGNERIA ELETTRONICA

aux1=aux1->next ; }

else

{ aux3->info = aux2->info ; aux2=aux2->next ; }

}

if(aux1 !=0) {

aux3=new elem ; aux3 ->next =0;

aux3->info = aux1->info; //inserimento in coda di l3 aux=l3 ;

while(aux->next = 0) aux=aux->next ; aux->next=aux3 ; if(aux2 !=0)} {

aux3=new elem ; aux3 ->next =0;

aux3->info = aux2->info; //inserimento in coda di l3 aux=l3 ;

while(aux->next = 0) aux=aux->next ; aux->next=aux3 ; }

return l3 ; }

Riferimenti

Documenti correlati

- x=migliore(): restituisce l’indice corrispondente alla cassa che ha il minor numero di clienti in coda (se le casse con il minor numero di clienti in coda sono

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