• Non ci sono risultati.

D=B-C A=113 B=41 C=-86 CORSO di LAUREA in INGEGNERIA delle TELECOMUNICAZIONI

N/A
N/A
Protected

Academic year: 2021

Condividi "D=B-C A=113 B=41 C=-86 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 – 6/06/2003 - C++

1. Un sistema per la gestione delle liste di attesa per i posti su un volo di linea funziona nel seguente modo. Ogni passeggero in possesso di una tessera personale (identificabile con un numero intero) è posto in lista di attesa secondo un ordine cronologico. Alcuni passeggeri sono in possesso di una tessera prioritaria (riconoscibile per avere il numero identificativo compreso fra 1 e 1000) e per loro l’inserimento in lista di attesa avviene secondo il seguente criterio: essi sono inseriti in lista di attesa prima dei passeggeri con tessera non prioritaria rispettando tuttavia un ordine cronologico solo rispetto agli altri passeggeri con tessera prioritaria.

Il sistema descritto può essere realizzato con una classe Lista_attesa che contiene una lista semplice a valori interi sulla quale sono possibili le seguenti operazioni:

 Lista_attesa(): costruttore che costruisce una lista vuota

 Metti_in_attesa (num_tessera): se num_tessera>1000 inserisci in coda, altrimenti inserisci dopo l’ultimo elemento avente numero di tessera <=1000 e prima del primo elemento con numero di tessera >1000.

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

 -Lista_attesa(): distruttore;

2. Un file non vuoto chiamato persone.txt è strutturato nel seguente modo:

ogni riga è composta da una stringa di lunghezza al più 30 caratteri che rappresenta il nome di una persona, un valore intero >0 che ne rappresenta l’età e un carattere F/M che ne identifica il sesso. Si scriva una funzione estrai() che legge il file perrsone.txt e stampa sul monitor il nome della donna più anziana contenuta nel file.

3. Siano date tre stringhe S1, S2 e S3 di lunghezza qualsiasi. Si scriva una funzione booleana ok=contenuto(S1, S2, S3) che restituisce True se ogni carattere si S3 è contenuto in S1 o in S2, e restituisce False altrimenti.

1. Dati i numeri decimali A=113, B=41 e C=-86, 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

12 9 9 3

1.

\\ Lista_attesa.h struct elem {

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

int num_tessera;

elem* next ; } ;

class Lista_attesa {

elem* L_A;

public:

Lista_attesa();

void metti_in_attesa(int n_t);

bool chiamata();

-Lista_attesa();

}

\\ Lista_attesa.cc

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

L_A=0;

}

void Lista_attesa::metti_in_attesa(int n_t) {

elem* aux, aux1, aux2;

aux=new elem;

aux->num_tessera=n_t;

if(l_a==0) {

aux->next=0;

l_a=aux;

return;

}

if(n_t>1000) //inserisci in coda {aux->next=0;

aux1=l_a;

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

aux1->next=aux;

}

else //inserisci prioritario {

if(l_a->num_tessera>1000) \\ inserisci in testa {

aux->next = l_a;

l_a=aux;

return ; }

for(aux1=l_a; aux1->num_tessera >1000; aux1=aux1->next) aux2=aux1;

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

(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

} }

void Lista_attesa::chiamata() {

elem* aux=l_a;

if(l_a==0) return;

l_a=l_a->next;

delete aux;

}

-Lista_attesa() {

elem *aux=l_a;

while ( aux!=0) {

l_a=l_a->next;

delete aux;

aux=l_a;

} } 2.

#include <fstream.h>

#include <string.h>

enum sesso {F, M} ; void estrai()

{

char nome[31], nome_a[31];

sesso s;

int eta;

fstream leggi;

leggi.open(‘persone.txt’, ios::in);

max_eta=-1;

while(leggi>>nome>>eta>>sesso) {

if(sesso==F && eta>max_eta) {

strcpy(nome, nome_a);

max_eta=eta;

} }

cout<<nome_a;

} 3.

bool contenuto(char* s1, char* s2, char *s3) {

int i=0;

int j=0;

int k=0;

bool ok=false;

(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

while(s3[i]!=0) {

while(s2[j]!=0) {

if(s2[j]==s3[i]) {

i++;

ok=true;

break;

} else

j++;

} if(!ok) {

while(s1[k]!=0)

{ if(s1[k]==s3[i]) {

i++;

ok=true;

break;

} else

k++;

} if(!ok)

return false;

j=0;

k=0;

ok=false;

} return true;

}

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

Si scriva una funzione booleana controlla(G) che riceve in ingresso la matrice e restituisce True se per ogni i (i&lt;=0&lt;N-1) la somma degli elementi della

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