Fabio Aiolli
unread,Feb 24, 2012, 4:56:38 AM2/24/12Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
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));
}