• 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 – 11/01/2002 - C++

1. Sia dato un file chiamato elenco_persone.txt che contiene per ciascuna riga il nome di una persona (max 15 caratteri) e l’età corrispondente. Si scriva una funzione estrai_anziani() che calcola l’età media m delle persone contenute in elenco_persone.txt e costruisce un nuovo file dove vengono scritti i nomi delle persone contenute in elenco_persone.txt che hanno l’età maggiore di m.

2. Si scriva una funzione modifica(l, n) che riceve in ingresso il puntatore l ad una lista semplice a valori interi e un valore intero n. La funzione modifica la lista l nel modo seguente:

 elimina tutti gli elementi che hanno il campo informativo multiplo di n;

 ed infine la rende circolare.

3. Sia data una stringa alfa composta da 12 caratteri. Si scriva una funzione booleana ok=estraibile(s) che riceve in ingresso una stringa s e che restituisce T se alfa contiene tutti i caratteri necessari a comporre s, F altrimenti.

Esempio: se alfa = MSAUCEOORTPE e s = COMPUTER  T se s = TORPORE  F

4. Dati i numeri decimali A=101, B=63 e C=-129, 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

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

_________________________________________________________________

Es. 1

#include <fstream.h>

void estrai_anziani() { fstream f,g;

char nome[16];

int eta=0;

int tot_eta=0;

int cont=0;

int m;

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

while(f>>nome>>eta) { tot_eta+=eta;

cont++;

}

if(cont==0) { cout<<”file vuoto”;

return; } m=tot_eta / cont;

f.close();

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

g.open(“elenco_anziani.txt”, ios::out);

while (f>>nome>>eta)

if (eta>m) g<<nome<<”\n”;

f.close();

g.close();

}

Es.2

struct elem { int info;

elem* next; };

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

while ((l->info%n == 0) && (l!=0)) //estrazione dalla testa della lista { l=l->next;

delete aux1;

aux1=l; }

if(l==0) return; //lista vuota

(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

elem *aux2=aux1;

for(; aux1!=0; aux1 = aux1->next) //estrazione non in testa { if(aux1->info % n !=0)

aux2=aux1;

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

delete aux1;

aux1=aux2; } }

aux2->next=l; //lista resa circolare

} Es. 3

bool estrazione(char *s, char alfa[13]) {

int usati [12];

int j;

for (int i=0; i<12; i++) usati[i]=0;

for(i=0; s[i]!=0; i++)

{ j=0;

for(j=0; j<13; j++)

{ if(s[i]==alfa[j]&&usati[j]==0) { usati[j]++;

break; }

}

if(j==13) return F;

}

return T;

}

Riferimenti

Documenti correlati

- x=migliore(): restituisce l’indice corrispondente alla cassa che ha il minor numero di clienti in coda (se le casse con il minor numero di clienti in coda sono

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