Composition86
20-12-2008, 18:20
Salve a tutti, ho realizzato il seguente semplice programma:
#include <conio.h>
#include <stdio.h>
#include <ctype.h>
#include <math.h>
#define DIM 50
typedef struct {
float media;
float deviazionestandard;
int minimo;
int massimo;
} tipoStatistica ;
void init (int mat[DIM][DIM]);
void stampaMatrice (int mat[DIM][DIM]);
void diagonale (int mat[DIM][DIM], int *);
float media (int v[DIM]);
float deviazione (int v[DIM]);
int min (int v[DIM]);
int max (int v[DIM]);
void statisticaDiagonale (int mat[DIM][DIM], tipoStatistica *stat, int *Diag);
void stampaStatistica (tipoStatistica *stat);
int main (void)
{
int Mat[DIM][DIM], *Diag;
tipoStatistica Stat;
char scelta;
do {
init (Mat);
stampaMatrice (Mat);
statisticaDiagonale (Mat, &Stat, Diag);
stampaStatistica (&Stat);
printf ("\nVuoi ripetere il programma? (Digita 'n' per terminare) ");
scelta=getche();
} while (tolower(scelta) != 'n');
}
void init (int mat[DIM][DIM])
{
int i, j, d;
printf ("Inserire la dimensione della matice quadrata: ");
scanf ("%d", &d);
printf ("Digitare dei numeri interi, elementi della matrice,
distribuendoli sulle righe:\n");
for (i=0 ; i<= d-1 ; i++) {
for (j=0 ; j<= d-1 ; j++) {
scanf ("%d", &mat[i][j]);
}
}
}
void stampaMatrice (int mat[DIM][DIM])
{
int i, j, d;
printf ("Ecco la matrice inizializzata:\n\n");
for (i=0 ; i<= d-1 ; i++) {
for (j=0 ; j<= d-1 ; j++) {
printf ("%d ", mat[i][j]);
}
printf ("\n");
}
}
void diagonale (int mat[DIM][DIM], int *diag) //Il vettore diag è l'output della funzione
{
int i, d;
for (i=0 ; i<= d-1 ; i++) {
diag[d]=mat[i][i];
}
}
float media (int v[DIM])
{
int k, d, somma=0, medium;
for (k=0 ; k<= d-1 ; k++) {
somma+=v[k];
}
medium=somma/d;
return medium;
}
float deviazione (int v[DIM])
{
int k, d, somma=0;
float standardeviation;
for (k=0 ; k<= d-1 ; k++) {
somma+= pow (v[k] - media(v), 2);
}
standardeviation = sqrt (somma/d);
return standardeviation;
}
int min (int v[DIM])
{
int k,d, minimum=v[0];
for (k=0 ; k<= d-1 ; k++) {
if (v[k] < minimum)
minimum = v[k];
}
return minimum;
}
int max (int v[DIM])
{
int k,d, maximum=v[0];
for (k=0 ; k<= d-1 ; k++) {
if (v[k] < maximum)
maximum = v[k];
}
return maximum;
}
void statisticaDiagonale (int mat[DIM][DIM], tipoStatistica *stat, int *Diag) //stat è una variabile ed è l'output
{
int k;
diagonale (mat, Diag);
stat->media = media(Diag);
stat->deviazionestandard = deviazione(Diag);
stat->minimo = min(Diag);
stat->massimo = max(Diag);
}
void stampaStatistica (tipoStatistica *stat)
{
printf ("La media degli elementi e': %.2f", stat->media);
printf ("La deviazione standard e': %.2f", stat->deviazionestandard);
printf ("L'elemento minimo e': %d", stat->minimo);
printf ("L'elemento massimo e': %d", stat->massimo);
}
Viene compilato senza dare errori, ma si blocca al momento di eseguire il gruppo di funzioni e procedure correlate alla procedura statisticaDiagonale ().
Dove sbaglio? Ringrazio anticipatamente.
#include <conio.h>
#include <stdio.h>
#include <ctype.h>
#include <math.h>
#define DIM 50
typedef struct {
float media;
float deviazionestandard;
int minimo;
int massimo;
} tipoStatistica ;
void init (int mat[DIM][DIM]);
void stampaMatrice (int mat[DIM][DIM]);
void diagonale (int mat[DIM][DIM], int *);
float media (int v[DIM]);
float deviazione (int v[DIM]);
int min (int v[DIM]);
int max (int v[DIM]);
void statisticaDiagonale (int mat[DIM][DIM], tipoStatistica *stat, int *Diag);
void stampaStatistica (tipoStatistica *stat);
int main (void)
{
int Mat[DIM][DIM], *Diag;
tipoStatistica Stat;
char scelta;
do {
init (Mat);
stampaMatrice (Mat);
statisticaDiagonale (Mat, &Stat, Diag);
stampaStatistica (&Stat);
printf ("\nVuoi ripetere il programma? (Digita 'n' per terminare) ");
scelta=getche();
} while (tolower(scelta) != 'n');
}
void init (int mat[DIM][DIM])
{
int i, j, d;
printf ("Inserire la dimensione della matice quadrata: ");
scanf ("%d", &d);
printf ("Digitare dei numeri interi, elementi della matrice,
distribuendoli sulle righe:\n");
for (i=0 ; i<= d-1 ; i++) {
for (j=0 ; j<= d-1 ; j++) {
scanf ("%d", &mat[i][j]);
}
}
}
void stampaMatrice (int mat[DIM][DIM])
{
int i, j, d;
printf ("Ecco la matrice inizializzata:\n\n");
for (i=0 ; i<= d-1 ; i++) {
for (j=0 ; j<= d-1 ; j++) {
printf ("%d ", mat[i][j]);
}
printf ("\n");
}
}
void diagonale (int mat[DIM][DIM], int *diag) //Il vettore diag è l'output della funzione
{
int i, d;
for (i=0 ; i<= d-1 ; i++) {
diag[d]=mat[i][i];
}
}
float media (int v[DIM])
{
int k, d, somma=0, medium;
for (k=0 ; k<= d-1 ; k++) {
somma+=v[k];
}
medium=somma/d;
return medium;
}
float deviazione (int v[DIM])
{
int k, d, somma=0;
float standardeviation;
for (k=0 ; k<= d-1 ; k++) {
somma+= pow (v[k] - media(v), 2);
}
standardeviation = sqrt (somma/d);
return standardeviation;
}
int min (int v[DIM])
{
int k,d, minimum=v[0];
for (k=0 ; k<= d-1 ; k++) {
if (v[k] < minimum)
minimum = v[k];
}
return minimum;
}
int max (int v[DIM])
{
int k,d, maximum=v[0];
for (k=0 ; k<= d-1 ; k++) {
if (v[k] < maximum)
maximum = v[k];
}
return maximum;
}
void statisticaDiagonale (int mat[DIM][DIM], tipoStatistica *stat, int *Diag) //stat è una variabile ed è l'output
{
int k;
diagonale (mat, Diag);
stat->media = media(Diag);
stat->deviazionestandard = deviazione(Diag);
stat->minimo = min(Diag);
stat->massimo = max(Diag);
}
void stampaStatistica (tipoStatistica *stat)
{
printf ("La media degli elementi e': %.2f", stat->media);
printf ("La deviazione standard e': %.2f", stat->deviazionestandard);
printf ("L'elemento minimo e': %d", stat->minimo);
printf ("L'elemento massimo e': %d", stat->massimo);
}
Viene compilato senza dare errori, ma si blocca al momento di eseguire il gruppo di funzioni e procedure correlate alla procedura statisticaDiagonale ().
Dove sbaglio? Ringrazio anticipatamente.