• 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 16/06/2009

1. Sia dato un vettore V a valori interi. Si definisca una classe VV che permette le seguenti operazioni sul vettore:

VV (int n): costruttore che crea il vettore V di dimensione n, e lo inizializza con valori nulli;

inverti(): modifca il vettore V scambiando fra loro i valori di V[i] e V[n-i-1] con i=0, …, n/2

bool tutti_positivi(): restituisce true se tutti gli elementi di V sono >0, false altrimenti.

Aggiorna(int x, int i):incrementa V[i] di x;

• ∼VV(): distruttore.

2. Sia dato un file num_interi.txt composto da N (N>0) righe. Ciascuna riga contiene tre valori interi. Si scriva una funzione void riga_min_max() che stampa sul monitor il numero x (1<=x<=N) della riga avente la somma dei valori che la compongono minima e il numero y (1<=y<=N) della riga avente la somma dei valori che la compongono massima.

3. Sia data una lista doppia l a valori interi. Si scriva una funzione elimina(l) che riceve in ingresso la lista l ed elimina dalla lista l’elemento con campo informativo massimo.

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

Punteggio:

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

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

//VV.h class VV {

int *V;

int dim;

public:

VV (int n);

void inverti ();

boolean tutti_positivi ();

void aggiorna (int x, int i);

~VV();}

//VV.cc

#include “VV.h”

VV::VV (int n) { V= new int[n];

dim=n;

for(int i=0; i<n; i++) V[i]=0;

}

void VV::inverti() { int x;

for(int i=0; i<(dim-1)/2; i++) { x=V[i];

V[i]=V[dim-i-1];

V[dim-1-i]=x; } }

boolean VV::tutti_positivi() { for(int i=0; i<dim; i++)

if(V[i]<=0) return false;

return true;

}

void V::aggiorna(int x, int i) { if(i>=dim) return;

V[i]+=x; }

VV::VV() { delete [] V; }

2.

#include <fstream.h>

void riga_min_max () {

int x, y, primo, secondo, terzo;

int somma=0;

int line=1;

int cont_min, cont_max;

fstream s, z;

s.open(num_interi.txt, ios::in);

if (s>>primo>>secondo>>terzo)

somma= primo+secondo+terzo;

(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

else {

cout<<”file vuoto”;

return;}

cont_min=somma;

cont_max=somma;

x=1;

y=1;

while (s>>primo>>secondo>>terzo) {

line++;

if(primo+secondo+terzo<cont_min) {

x=line;

cont_min =primo+secondo+terzo;

}

if(primo+secondo+terzo>cont_max) {

y=line;

cont_max=primo+secondo+terzo;

} }

cout<<”linea di somma minima: “<< x <<”linea di somma massima: “<<y;

z.close();

s.close();

}

3.

struct elem { int info;

elem* next;

elem *prec; };

void elimina(elem *& l) {

elem *aux, *pun;

if(l==0 ) return;

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

l=0;

return; } max=l->info;

pun=l ;

for(aux=l->next; aux!=0; aux=aux->next) { if (aux->info > max) { max=aux->info ;

pun=aux ; }

if(pun==l) {

for(aux=l ; aux->next !=0 ; aux=aux->next) ; l=l->next ;

l->prec=0 ; aux->next=0 ; delete pun ; return ;}

pun->next->prec=pun->prec ; pun->prec->next=pun->next ; delete pun ;

}

Riferimenti

Documenti correlati

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 elimina(l) che riceve in ingresso la lista l e la modifica eliminando tutti gli elementi che hanno il campo informativo uguale a quello

Scrivere una funzione elimina(l) che riceve in ingresso la lista l e la modifica eliminando tutti gli elementi che hanno il campo informativo uguale a quello

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