• 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 – 14/02/2002 - C++

1. Il medagliere dei giochi olimpici può essere rappresentato mediante una matrice di dimensione nx3 dove l’indice delle righe identifica una nazione partecipante e ciascuna colonna rappresenta il numero di medaglie vinte (la colonna di indice 0 contiene il numero delle medaglie d’oro vinte, quella di indice 1 il numero di quelle argento e la colonna di indice 2 il numero di quelle di bronzo). Si definisca una classe medagliere assumendo che le possibili operazioni siano le seguenti:

 medagliere(): costruttore che crea un medagliere con N nazioni ciascuna senza alcuna medaglia vinta;

 medaglia(n, m): aggiorna il medagliere assegnando una medaglia di tipo m alla nazione corrispondente all’intero n;

 n=situazione_nazione(n): restituisce il numero di medaglie vinte dalla nazione corrispondente all’intero n;

 ~medagliere(): distruttore: dealloca l’intero medagliere;

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 delle TELECOMUNICAZIONI 2. Sia dato il file non vuoto elenco_per_nome.txt che contiene in ciascuna riga il nome di una persona (stringa di al più 20 caratteri) e il corrispondente numero di matricola (intero positivo). Si scriva una funzione ordina_per_matr() che costruisce un nuovo file elenco_per_matr.txt contenente lo stesso elenco ma ordinato per numero di matricola in senso decrescente.

3. Sia data una lista semplice l i cui elementi hanno due campi informativi che rappresentano l’ascissa e l’ordinata di un punto nello spazio cartesiano. Si scriva una funzione in_cerchio(l, n) che riceve come parametri la lista l e un intero n e che modifica l deallocando tutti gli elementi che hanno una distanza dall’origine degli assi maggiore di n.

4. Dati i numeri decimali A=233, B=-163 e C=90, 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-B e si dica se il risultato è o no significativo

Punteggio:

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

10 10 10 3

// medagliere.h

enum matallo {O, A, B};

const int N=20;

class medagliere { ind *M;

public:

medagliere() ;

void medaglia(int n, metallo m) ;

int situazione_nazione(int n, matallo m);

~medagliere() {delete [ ][3] M;};

}

// medagliere.cc

#include “medagliere.h”

medagliere::medagliere() { M = new int[N][3];

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

}

void medagliere::medaglia(int n, metallo m) {

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

(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

M[n][m]++; }

int medagliere::situazione_nazione(int n) {

int cont=0;

cont=cont+M[n][0]+M[n][1]+M[n][2];

return cont ; }

2.

#include <fstream.h>

void ordina_per_matr() { fstream f, g;

char nome[21];

int matr;

int cont=0 ; int matr_max=0;

char nome_max[21] ; int matr_ok=0;

char nome_ok[21] ;

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

g.open(“elenco_per_matr.txt, ios::app);

while(f>>nome>>matr)

{ if(matr>matr_max) matr_max=matr;

strcpy(nome, nome_max);

cont++; }

g<<nome_max<<matr_max<<”\n”;

matr_ok=0;

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

f.close();

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

while(f>>nome>>matr) { if(matr_ok<matr<matr_max)

{ matr_ok=matr;

strcpy(nome, nome_ok);

} }

g>>nome_ok >> matr_ok;

matr_max= matr_ok;

matr_ok=0 ; }

f.close() g.close();

} 3.

[#include <math.h>

struct elem { double x;

double y;

(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

elem* next; };

void in_cerchio (elem *&l, int n) { elem *aux1=l;

while (sqrt((l->x*l->x)+ (l->y*l->y))>=n) && (l!=0)) //estrazione dalla testa { l=l->next;

delete aux1;

aux1=l;}

if(l==0) return;

elem *aux2=aux1;

for(; aux1!=0; aux1 = aux1->next) //estrazione non dalla testa { if(sqrt((aux1->x*aux1->x)+ (aux1->y*aux1->y))>=n))

aux2=aux1;

else { aux2->next = aux1->next;

delete aux1;

aux1=aux2; } }

}

Riferimenti

Documenti correlati

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

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