Soluzione compito 09/02

38 views
Skip to first unread message

Fabio Aiolli

unread,
Feb 24, 2012, 4:56:38 AM2/24/12
to PRxMAT12atUNIPD

Segue una bozza di soluzione (non commentata, i commenti dovete
aggiungerli voi), della prima parte del compito del 09/02/12.

// Esercizio 1.1

int SommaBordiMat(int a[N][N]) {
int somma=0;
int i,j;
for (j=0; j<N; j++)
somma+=a[0][j]+a[N-1][j];
for (i=1; i<N-1; i++)
somma+=a[i][0]+a[i][N-1];
return somma;
}

// Esercizio 1.2

int ContOrd(int a[], int n) {
int dec=1, cre=1;
while ((dec||cre)&&(i<(n-1))) {
if (a[i]<a[i+1])
dec=0;
if (a[i]>a[i+1])
cre=0;
i++;
}
if (dec||cre)
return 1;
else return 0;
}

// Esercizio 1.2b

void Floyd(int N) {
int i,j,k=1;
for (i=0; i<N; i++) {
for (j=0; j<i; j++)
printf("%d ",k++);
pritnf("\n");
}
}

// Esercizio 1.3

struct frazione {
int numeratore;
int denominatore;
};

struct frazione riduci(struct frazione f) {
int mcd=MCD(f.numeratore,f.denominatore);
if (mcd!=1){
f.numeratore/=mcd;
f.denominatore/=mcd;
}
return f;
}

// ESERCIZIO 1.4

// S(0)=0
// S(n)=S(n-1)+n

int S(int n) {
if (n==0) return 0;
return S(n-1)+n;
}

// ESERCIZIO 1.5

// POST La funzione Alpha fa una visita post-order dell'albero binario
passato in input. Per ogni nodo visitato: 1) se il nodo ha un figlio
sx stampa una "L" e visita il sottoalbero sx, 2) se il nodo ha figlio
dx stampa una "R" e visita il sottoalbero dx, 3) infine stampa "U".

// PREC L'albero in input deve essere un albero valido, definito per
esempio come segue:

struct Nodo {
int val;
Nodo* left;
Nodo* right;
};

typedef Nodo* Albero;

// Immaginando di avere una funzione

Albero CreaAlberoRandom();

// che crea un albero in modo casuale un possibile programma di
esempio e' il seguente:

main() {
Albero a=CreaAlberoRandom();
ALPHA(a);
}

// Per l'albero riportato nell'esercizio la funzione ALPHA stampa
"LLURUURUU"

// Esercizio 1.6

float CalcolaDiscriminante(float a, float b, float c) {
return b*b-4*a*c;
}

void SolEqSecGrado(float a, float b, float c) {
float d=CalcolaDiscriminante(a,b,c);
if (d<0) {
printf("Non ci sono soluzioni reali!\n");
return;
}
if (d==0) {
printf("L'unica soluzione e' %f\n",-b/(2*a));
return;
}
printf("Le soluzioni sono: ");
printf("%f ", (-b-sqrt(d))/(2*a));
printf("e %f ", (-b+sqrt(d))/(2*a));
}

Mattia Buso

unread,
Feb 24, 2012, 11:24:12 AM2/24/12
to prxmat1...@googlegroups.com
Sarebbe possibile avere il testo del compito?
Reply all
Reply to author
Forward
0 new messages