• 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!
3
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

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

ESAME DI FONDAMENTI DI INFORMATICA - 31/01/2007 - C++

1. Sia data una matrice M a valori interi di dimensione NxN. Si definisca una classe MAN_M che permette le seguenti operazioni su M: - MAN_M() costruttore che inizializza la matrice con tutti i valori uguali a zero;

- int trova_riga_max(): restituisce l’indice della riga la cui somma degli elementi è massima (se il numero di tali righe è >1, restituisce l’indice maggiore);

- void incrementa(i, j, n): incrementa di un valore intero n l’elemento M[i][j];

- bool colonna_nulla(): restituisce true se M ha almeno una colonna composta solo da valori uguali a zero.

2. 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 numero di dipendenti e il fatturato (interi positivi). Si scriva una funzione trova(int n) che legge il file e stampa sul monitor la ragione sociale della ditta il cui fatturato si avvicina maggiormente a n (senza tuttavia superarlo). Nel caso in cui più di un’azienda risponda al precedente requisito, si stampa sul monitor la ragione sociale di quella con il numero di dipendenti minore.

3. Sia data una lista semplice circolare a valori interi l. Si scriva una funzione elimina2(l, n) che riceve in ingresso la lista l e un intero n.

La funzione prima si posiziona sull’elemento che incontra scorrendo la lista di n posizioni e quindi dealloca i due elementi che lo seguono.

4. Dati i numeri decimali A=-127, B=66 e C=-77, 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 10 10 3

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

//MAN_M.h const int N=16

class MAN_M { int M[N][N];

public:

MAN_M();

int trova_riga_max();

void incrementa (int i, int j, int n) {M[i][j]+=n;}

bool colonna nulla();}

//MAN_M.cc

#include “MAN_M.h”

MAN_M::MAN_M () { for(int i=0; i<N; i++)

for(int j=0; j<N; j++) M[i][j]=0;

}

int MAN_M::trova_riga_max() { int cont=0;

int cont_max=0;

int ind=0;

for(int i=0; i<N; i++) cont_max+=M[0][i];

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

for(int j=0; j<N; j++) cont+=M[i][j];

if(cont>=cont_max) { cont_max=cont;

ind=i; } }

return ind;

}

bool MAN_M::colonna_nulla() { bool controllo = true;

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

if(M[j][i] !=0) { controllo=false;

break; } if(controllo) return controllo;

else controllo=true;

}

return false;

}

2.

#include <fstream.h>

void trova(int n) { fstream f;

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

char az[29], az_ok[29];

int dip, dip_min;

(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 fatt, fatt_ok;

f>>az_ok>>dip_min>>fatt_ok;

while(f>>az>>dip>>fatt)

if(fatt<=n && fatt>fatt_ok) || if(fatt<=n && fatt=fatt_ok && dip<dip_min) {fatt_ok=fatt; dip_min=dip;}

if(fatt_ok > n) cout<<”nessuna azienda soddisfa il requisito\n”;

cout<<az<<”\n”;

}

3.

void elimina2(int n, elem *&l) {

elem *aux1, *aux2, *aux3;

if(l==0) return;

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

l=0;

return; }

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

delete l;

l=0;

return; } aux1=l;

for(int i=0; i<n; i++) aux1=aux1->next;

aux2=aux1->next;

aux3=aux2->next;

if(aux2==l || aux3==l) l=aux3->next;

aux1->next=aux3->next;

delete aux2;

delete aux3;

}

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

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,

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