ESAME DI FONDAMENTI DI INFORMATICA - SIMONCINI – 7/9/2000 - C++
1. e2 e5 e8
e11 e14 e3 e6 e9
e12 e15 e1 e2 e3 e4 e5 e6 e7 ..; e15 Si scriva una funzione in_matrice() che costruisce un file chiamato matrice.dat che rappresenta una matrice di dimensione N*M (N righe ciascuna con M valori interi separati da uno spazio vuoto). Il file matrice.dat deve essere tale che la sua prima colonna č costituita dai primi N elementi del file dati.dat, la seconda colonna dai successivi N elementi di dati.dat, ecc. |
Es.: N=3, M=5 Dati.dat: Matrice.dat: |
2. Si scriva una funzione ok=controlla(M1, M2) che riceve in ingresso due matrici binarie (di elementi 0/1) di dimensione NxN. La funzione controlla che ogni riga i-esima della matrice M1 contenga tutti e soli gli elementi della colonna (N-i)-esima di M2 e in tal caso restituisce il valore True. Altrimenti restituisce False.
3. Si scriva una funzione dist=farthest(s) che accetta in ingresso il puntatore ad una lista di punti nello spazio cartesiano (x, y), trova la coppia che dista maggiormente dall’origine degli assi e ne restituisce la distanza.
4. Data la seguente mappa di Karnaugh si determini il valore delle uscite “non specificate” in modo da ottenere la forma minima ottimale.
1 |
- |
- |
|
- |
1 |
1 |
- |
10 |
10 |
10 |
3 |
1.
#include <fstream.h>
void in-matrice ()
{
int i, j, h;
fstream leggi, scrivi;
scrivi.open (“matrice.dat”,
ios::out);
int parti, letto, avuoto;
for (i=1; i<=N; i++)
{
leggi.open
(“dati.dat”, ios::in);
parti=i-1;
while
(parti>0) {
leggi>>avuoto;
parti--;
}
for
(h=1; h<=M; h++)
{
leggi
>> letto;
scrivi
<<letto<< “ “;
for
(j=1; j<N; j++)
leggi
>> avuoto;
}
scrivi<<”/n”;
leggi.close();
}
scrivi.close();
}
2.
enum bool {F, T}
const int N=8;
bool confronta (int M1 [N][N],
int M2 [N][N])
{
bool continua = T;
int conta1=0;
int conta2 = 0;
for (int i=0; i<N; i++)
{ for
(int j=0; j<N; j++)
{
conta1
+= M1[i][j];
conta2
+= M2[j][N-I-1];
}
if
(conta1 != conta2) {
continua=F;
break;
}
}
return continua;
}
3.
#include <math.h>
struct point { double
x;
double
y;
point*
next;
}
double farthest (point* s)
{
double a, b, d;
double dist_max = 0;
if (s==0) return –1;
while (s!=0)
{
a = (s->x) * (s->x);
b = (s->y) * (s->y);
d = sqrt (a+b);
if (d >= dist_max) dist_max
= d;
s=s->next;
}
return dist_max;
}