• Non ci sono risultati.

m num1.dat num2.dat m estrai() num1.dat CORSO di LAUREA in INGEGNERIA delle TELECOMUNICAZIONI

N/A
N/A
Protected

Academic year: 2021

Condividi "m num1.dat num2.dat m estrai() num1.dat 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 – 30/01/2006 - C++

1. La gestione della fila al banco del check-in di un aeroporto è organizzato mediante il seguente criterio: i passeggeri vengono accettati secondo un ordine cronologico, tranne coloro che hanno una tessera prioritaria i quali vengono accettati prima dei passeggeri senza tessera prioritaria rispettando tuttavia un ordine cronologico solo rispetto agli altri passeggeri con tessera prioritaria. Il sistema descritto può essere realizzato con una classe Attesa che contiene una lista semplice i cui elemento hanno due campi informativi: un valore intero che rappresenta l’indentificativo del passeggero e un valore booleano che indica se il passeggero possiede la tessera prioritaria. La possibili operazioni su questa lista sono:

- Attesa(): costruttore che costruisce una lista vuota

- In_attesa (id, priority): se il valore del parametro booleano priority è uguale a true allora il passeggero id ha una tessera prioritaria, altrimenti non la ha. La funzione realizza l’inserimento in lista secondo i criteri descritti sopra.

- Chiamata(): se la lista non è vuota estrae dalla testa e restituisce True, restituisce False altrimenti.

- ~Attesa(): distruttore.

2. Sia dato un file chiamato num1.dat ciascuna riga del quale è composta da due numeri interi. Si scriva una funzione estrai() che calcola la media aritmetica m dei secondi elementi di ciascuna riga del file e quindi costruisce un nuovo file chiamato num2.dat composto dalle sole righe di num1.dat aventi la somma dei due elementi che la compongono minore di m.

3. Scrivere una funzione comuni(MAT, A) che riceve in ingresso una matrice MAT di dimensione NxN a valori interi e un array A di dimensione M a valori interi. La funzione stampa sul monitor tutti gli elementi di A che compaiono anche in MAT.

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

Punteggio:

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

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

\\ Attesa.h struct elem {

int ID;

boolean priorità;

elem* next ; } ;

class Attesa {

elem* A;

public:

Attesa();

void n_attesa(int n_t);

bool chiamata();

~Attesa();

}

\\ Lista_attesa.cc

#include “Lista_attesa.h Attesa::Attesa() {

A=0;

}

void Attesa::in_attesa(int pass, boolean p) {

elem* aux, aux1, aux2;

aux=new elem;

aux->ID=pass;

aux->priorità=p ; if(A==0)

{

aux->next=0;

A=aux;

return;

}

if(!p) //inserisci in coda {

aux->next=0;

aux1=A;

while(aux1->next!=0) aux1=aux1->next;

aux1->next=aux;

}

else //inserisci prioritario {

if(!A->priorità) \\ inserisci in testa {

aux->next = A;

A=aux;

return ; }

for(aux1=A; (aux1->priorità && aux1 !=0); aux1=aux1->next) aux2=aux1;

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

}

boolean Attesa::chiamata()

(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

{

elem* aux=A;

if(A==0)

return false;

A=A->next;

delete aux;

return true;

}

Attesa::~Attesa() {

elem *aux=A;

while ( aux!=0) {

A=A->next;

delete aux;

aux=A;

} }

Es. 2

#include <fstream.h>

void estrai () {

int m, primo, secondo;

int somma=0;

int cont=0;

fstream s, z;

s.open(num1.dat, ios::in);

while (s>>primo>>secondo) {

cont++;

somma+= secondo;

}

m=somma/cont;

s.close();

s.open(num1.dat, ios::in);

z.open(num2.dat, ios::out);

while (s>>primo>>secondo) {

if(primo+secondo<m)

z<<primo<<”\t”<<secondo<<”\n”;

}

z.close();

s.close();

} Es. 3

const int N=20;

const int M=30;

(4)

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

void comuni (int mat[N][N], int A[M]) {

boolean trovato=false;

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

trovato=false;

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

{ for(int k=0; k<N; k++) if (A[i]==mat[j][k])

{ cout<<A[i]<<”\n”;

trovato=true;

break;

} if(trovato) break;

} }

Riferimenti

Documenti correlati

33120L3, che i documenti, le informazioni e i dati oggetto di pubblicazione obbligatoria ai sensi della normativa vigente, resi disponibili anche a seguito dell'accesso

c) di aver percepito nell'anno 2018 i seguenti emolumenti complessivi per viaggi e missioni a carico della finanza pubblica, bqrrore se non ha ricoperto

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

Si scriva una funzione estrai() che calcola la media aritmetica m dei terzi elementi di ciascuna riga del file e quindi costruisce un nuovo file chiamato num2.dat

LIGANDI AD AZIONE DUALE SERT - INIBITORI AchE .... INTRODUZIONE ALLA PARTE

• con verifica della firma autentica da parte di un funzionario pubblico del Comune o da un qualsiasi pubblico ufficiale, come un notaio (scrittura privata autenticata);.. •

Nell’affrontare tale decisione i supremi giudici dello Stato individuano il substituted judgement come strumento per articolare il potere di autodeterminazione con