ESAME DI FONDAMENTI DI INFORMATICA - SIMONCINI – 12/09/2002 - C++
1.
Sia
dato un file chiamato numeri.txt contenente un insieme di
valori interi. Si scriva una funzione estremi() che trova il massimo ed il
minimo valore contenuti nel file numeri.txt. Questa funzione deve anche
costruire un nuovo file numeri_bis.txt che contiene gli stessi
elementi di numeri.txt con l’eccezione di tutte le
occorrenze del massimo e del minimo.
2.
Sia
data una matrice H di dimensione MxM a valori interi. Si scriva
una funzione controlla(a, c) che riceve in ingresso due
array a e c di dimensione N a valori interi. La funzione
modifica l’array c in modo tale che il generico elemento c[i] vale 1 se il valore del
corrispondente elemento a[i] compare nella matrice H, 0 altrimenti.
3.
Sia
data una lista semplice l i cui elementi hanno due campi informativi
interi. Si scriva una funzione coppie(l) che elimina tutti gli
elementi di l che hanno entrambi i campi minori dei
corrispondenti campi della testa della lista stessa.
4.
Dati
i numeri decimali A=155, B=-83 e C=79, 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 |
10 |
10 |
10 |
3 |
1.
#include <fstream.h>
void estremi {
bool contr=F;
fstream f, g;
int a, x, min, max;
f.open(“numeri.txt”,
ios::in);
if (f>>max)
{ while(f>>min)
{ if(max!=min) { contr=T;
break; }
else return;
}
if((!contr)
return;
}
else return;
if(max<min) { a=max;
max=min;
min=a;
}
while(f>>x)
{ if(x>max) max=x;
if(x<min) min=x;
}
f.close();
f.open(“numeri.txt”,
ios::in);
g.open(“numeri_bis.txt,
ios::out);
while(f>>x)
{
if((x!=max)&&(x!=min))
g<<x;
}
f.close();
g.close();
}
2.
void controllo (int a[N],
int c[N])
{
bool contr = F;
for (int i=0; i<N; i++)
c[i] =0;
for(i=0; i<N; i++)
for(int j=0; j<M; j++)
for(int h=0; h<M; h++)
{
if(a[i]==M[j][h])
{ c[i]=1;
contr=T;
break;
}
}
if(contr) break;
}
contr=F;
} }
3.
struct elem {
int a;
int b;
elem* next;
}
void coppie (elem *l)
{
int at, bt;
elem *aux, *aux2;
if (l==0)
return;
if(l->next==0) return;
at= l->a;
bt=l->b;
aux=l->next;
aux2=l;
for(; aux!=0; aux=aux->next)
{
if((aux->a < at) && (aux->b <bt))
{
aux2->next = aux->next;
delete aux;
aux=aux2;
}
else
aux2=aux1;
}}}