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

1. Un parcheggio multilivello è rappresentabile mediante una matrice P a valori booleani di dimensione NxM. N rappresenta il numero di livelli del parcheggio e M il numero di posti auto di ciascun livello. Si definisca una classe Park ogni oggetto della quale rappresenta un parcheggio. Sugli oggetti di tale classe è possibile effettuare le seguenti operazioni:

 Park(): costruttore che inizializza il parcheggio senza alcuna auto parcheggiata.

 Ok=ingresso(): assegna un posto ad un’auto seguendo il seguente criterio: si assegnano i posti partendo dal livello più alto e si deve assegnare un posto libero al livello i se tutti i posti ai livelli superiori sono occupati. Se esiste almeno un posto libero esso viene occupato e viene restituito il valore true, se tutti i posti del parcheggio sono occupati allora non si effettua alcuna operazione restituendo il valore false.

 Uscita(i, j): rende disponibile il posto numero j del livello i-esimo.

 N = posti_liberi(): restituisce il numero di posti liberi nel parcheggio.

2. Sia dato un file persone.txt che contiene per ciascuna riga una stringa di al più 24 caratteri e un valore intero che rappresentano rispettivamente il nome e l’età di una persona. Si scriva una funzione nuovo_elenco() che crea un nuovo file n_persone.txt che contiene tutte le righe di persone.txt ad eccezione di quelle che corrispondono alle persone di età minima.

3. Sia data una lista semplice l i cui elementi hanno due campi informativi, info_int di tipo intero e info_car di tipo char. La lista l è ordinata in senso crescente prioritariamente in base al valore del campo info_int e secondariamente in base al valore del campo info_car. Si scriva una funzione inserisci(l, n, x) che riceve in ingresso la lista l, un valore intero n e un carattere x e inserisce un nuovo elemento in l con campo info_int uguale a n e campo info_car uguale a x mantenendone l’ordinamento.

4. Dati i numeri decimali A=111, B=-88 e C=-59, 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

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

1.

//Park.h const int N=5;

const int M=40;

class Park {

boolean P[N][M];

public:

boolean ingresso ();

void uscita (int i, int j);

int posti_liberi();

Park();

} //Park.cc

# include “Park.h”

#include <iostream.h>

Park::Park() {

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

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

}

boolean Park:: ingresso () { for(int i=N-1; i>=0; i--)

for(int j=0; j<M; j++) if(P[i][j]==false) { P[i][j]=true;

return true;

} return false;

}

void Park::uscita(int i, int j) {

if ((i<0) || (i>N-1) || (j<0) || (j>M-1)) {

cout << “indici posto sbagliati\n”;

return;

} P[i][j]==false;

}

int Park::posti_liberi() { int conta=0;

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

for(int j=0; j<M; j++) if (P[i][j]) conta++;

cout<<”numero posti liberi: “<<conta<< “\n”;

} 2.

#include <fstream.h>

void nuovo_elenco() {

fstream leggi, scrivi;

char nome[25];

(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 eta, eta_min;

leggi.open(“persone.txt”, ios::in);

scrivi.open(“n_persone.txt”, ios::out);

if (leggi>>nome>>eta) eta_min=eta;

else

{ scrivi.close();

return;

}

while(leggi>>nome>>eta) if(eta<eta_min)

eta_min=eta;

leggi.close();

leggi.open(“persone.txt”, ios::in);

while((leggi>>nome>>eta) if(eta>eta_min)

scrivi<<nome<<eta;

scrivi.close(), leggi.close();

}

3.

struct elem { int info_int;

char info_char;

elem* next; };

void inserisci(int n, char x, elem *&l) {

elem *aux, *aux1, *aux2;

aux2=new elem ; aux2->info_int=n;

aux2->info_car=x ;

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

l=aux2;

return;

}

if(l->info_int>v || (l->info_int==n && l->info_car>x)) // inserimento in testa { aux2->next=l;

l=aux2 ; return, }

for(aux=l ; (aux->info_int<n || (aux->info_car<x && aux->info_int==n) && aux !=0) ; aux=aux->next) aux1=aux ;

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

Riferimenti

Documenti correlati

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

Sia dato un file chiamato elenco.txt contenente in ciascuna riga una stringa di caratteri e un valore numerico che rappresentano rispettivamente il nome (stringa

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