ESAME DI FONDAMENTI DI INFORMATICA - SIMONCINI – 12/01/2001 - C++
1.
Un
file chiamato numeri.dat contiene un insieme non
vuoto di numeri interi maggiori di zero. Scrivere una funzione cerca_due_max() che legge il file e stampa
sul monitor i due numeri più grandi contenuti in esso.
3. Si scriva una funzione elimina(c, l) che riceve in ingresso un
carattere c e il puntatore l a una lista i cui elementi contengono due campi informativi: una campo
carattere ed un campo binario F/T. La funzione elimina gli elementi
che hanno il valore di c nel primo campo informativo
e il valore T nel secondo. Le eventuali
modifiche apportate alla lista originaria devono essere mantenute anche dopo la
terminazione della funzione.
4. Dati i numeri decimali A=64, B=-63 e C=51, 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=B-A-1 e si dica se il risultato è o no significativo
10 |
8 |
11 |
4 |
#include <fstream.h>
void cerca_due_max()
{
fstream f;
int letto, max1;
int max2=0;
f.open (“numeri.dat”, ios::in);
f >> max1;
while (f>> letto) {
if (letto > max1)
{ max2 =
max1;
max1 = letto; }
else if (letto >max2) max2=letto;
}
if (max2==0)
cout<< “il file contiene un solo elemento
!\n”;
else
cout<<”i
due valori più grandi sono:\n”<< max1 << “e\t” << max2;
f.close();
}
const int N=10;
void build_matrix (int
M[N][N])
{
int j;
for(int i=0; i<N; i++)
for(j=0; j<N; j++)
{
if(i==j)
{
M[i][i]=i;
M[i][N-i-1]=N-i-1;
}
else
M[i][j]=0;
}
}
enum bool {F, T};
struct elem {
char lettera;
bool ok;
elem* next;
};
void elimina (elem *& l,
char c)
{
elem *aux, *p;
aux=l,
p=l ;
if (l==0) return;
while((aux->lettera == c)
&& (aux->ok) && (aux !=0))
{
l=aux->next ;
p=l ;
delete
aux ;
aux=l ;
}
if
(aux !=0)
aux=aux->next ;
else
return ;
while
(aux !=0)
{
if ((aux->lettera==c) &&
(aux->ok))
{
p->next =aux->next ;
delete
aux;
aux=p->next;
}
else {
aux=aux-next ;
p=p->next ;
}
}
}