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

1. 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 ne rappresenta il numero di matricola. Scrivere una funzione trasforma() che modifica il file dati.txt in modo tale che contenga soltanto due righe del file originario: quella relativa al numero di matricola più grande e quella relativa al numero di matricola più piccolo.

2. Sia data una lista semplice l i cui elementi hanno due campi informativi di tipo intero. Si scriva una funzione modifica(l) che elimina dalla lista l quegli elementi che hanno entrambi i campi informativi pari.

3. Siano date due matrici quadrate M1 e M2 entrambe di dimensione NxN a valori booleani (0/1). Si scriva una funzione booleana ok=controlla_contenuto(M1, M2) che restituisce true se entrambe le matrici contengono lo stesso numero di elementi con valore 0, false altrimenti.

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

Punteggio:

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

11 10 9 3

1.

#include <fstream.h>

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

#include <string.h>

void trasforma() {

fstream f;

int num;

char nome[25];

int matr_max, matr_min;

char nome_max[25], nome_min[25];

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

if(f>>nome_max>>matr_max);

else

{ f.close();

return; }

if(f>>nome_min>>matr_min);

else{f.close();

return; }

if(matr_min>matr_max) { num=matr_min;

matr_min=matr_max;

matr_max=num;

strcpy(nome, nome_min), strcpy(nome_max, nome_min);

strcpy(nome_max, nome);

}

while(f>>nome>>num) { if(num>matr_max)

{ strcpy(nome_max, nome);

matr_max=num;

}

if(num<matr_min)

{ strcpy(nome_min, nome);

matr_min=num;

} }f.close();

f.open(“dati.txt”, ios::out);

f<<nome_min<<” “<<matr_min<<”\n”<<nome_max<<” “<<matr_max;

f.close();

}

2.

struct elem { int info1;

int info2;

elem *next;

};

void elimina(elem *&l) {

elem *aux1, *aux2;

if(l==0) return;

aux1=l;

// eliminazione dalla testa della lista

while(l!=0 && l->info1%2==0 && l->info2%2==0)

(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

{ l=l->next;

delete aux1;

aux1=l;

}

if(l==0) return;

aux2=l->next;

while(aux2!=0)

{ if(aux2->info1%2==0 && aux2->info2%2==0) { aux1->next=aux2->next;

delete aux2;

aux2=aux1->next;

} else

{ aux1=aux1->next;

aux2=aux2->next;

} } }

3.

const int N=12;

boolean controlla_contenuto(boolean M1[N][N], boolean M2[N][N]) {

int cont1=0;

int cont2=0;

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

for(int j=0; j<N; j++) { if(M1[i][j]) cont1++;

if(M2[i][j]) cont2++;

}

if(cont1==cont2) return true;

return false;

}

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