codice:
* Esercitazione del 23/05/2011
Corso di Elementi di Informatica
Ing. Aerospaziale (E-Z)
Prof. Vincenzo Moscato
*/
// Preambolo
// Direttive di compilazione
// Include librerie e definizione costanti
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 50
#define M 100
// Definizione del tipo Vettore e Stringa per array di reali e caratteri
typedef double Vettore[N];
typedef char Stringa[M];
// Prototipi delle funzioni
void read_vector(Vettore v, int* n, Stringa nome_file);
void print_vector(Vettore v, int n);
double max(Vettore v,int n);
double min(Vettore v,int n);
double mean(Vettore v, int n);
double var(Vettore v, int n);
int count_null(Vettore v,int n);
void process_vector(Vettore v, int n1, int* n2);
void save_vector(Vettore v, int n, Stringa nome_file);
void read_vector(Vettore v, int *n, Stringa nome_file)
{
register int i;
FILE *fp;
int ret;
fp=fopen(nome_file, "r");
if(fp==NULL)
printf("Errore nell'apewrtura del file.");
else
{
ret=fscanf(fp, "%d", n);
if(ret!=EOF)
{
//printf("\nNumero elementi vettore: %d \n", *n); Ricorda di eliminare riga a salvataggio compiuto......stronzoneeeeeeeeeeee
if(*n>0)
{
for(i=0; i<*n; i++)
{
fscanf(fp, "%lf", &v[i]);
}
}
}
else
printf("\nIl file e' vuoto!!!!\n");
fclose(fp);
}
}
void print_vector(Vettore v, int n)
{
register int i;
printf("[");
for(i=0;i<n;i++)
{
if(i<(n-1))
printf("%lf,", v[i]);
else
printf("%lf", v[i]);
}
printf("]\n");
}
double max(Vettore v, int n)
{
register int i;
double max=v[0];
for(i=0;i<n;i++)
{
if (v[i]>max)
max=v[i];
}
return max;
}
double min(Vettore v, int n)
{
register int i;
double min=v[0];
for(i=0;i<n;i++)
{
if (v[i]<min)
min=v[i];
}
return min;
}
double mean(Vettore v, int n)
{
register int i;
double somma=0, media;
for(i=0; i<n; i++)
{
somma+= v[i];
}
media=(somma/n);
return media;
}
double var(Vettore v, int n)
{
register int i;
double somma=0, var;
for(i=0; i<n; i++)
{
somma+= pow((v[i]-mean(v, n)), 2);
}
var= (somma/n);
return var;
}
int count_null(Vettore v,int n)
{
register int i;
int somma_nulli=0;
for(i=0;i<n;i++)
{
if(v[i]==0)
{
somma_nulli+=1;
}
}
return somma_nulli;
}
void process_vector(Vettore v, int n1, int* n2)
{
register int i, j;
int z=0, posiz;
for(i=0; i<n1; i++)
{
if( v[i] == 0)
{
z++;
posiz=i;
printf("\t%d\t", posiz);
}
else
printf("caxxo vuoi");
for(j=posiz+1; j<n1; j++)
{
v[j-1]=v[j];
}
}
*n2= (n1 - z);
printf("\n%d, %d, %d\n", *n2, n1, z);
}
int main()
{
Vettore magn, grav;
Stringa filename, filename2;
int n, m, j;
printf("Inserire il nome del file contenente i valori dei campi magnetici: \n");
scanf("%s", &filename);
read_vector(magn, &n, filename);
printf("Inserire il nome del file contenente i valori dei campi gravitazionali: \n");
scanf("%s", &filename2);
read_vector(grav, &m, filename2);
printf("I valori dei campi magnetici e gravitazionali sono rispettivamente: \n\n");
printf("Vet_magnetici: ");
print_vector(magn,n);
printf("\nVet_gravitazionali: ");
print_vector(grav,m);
printf("Il minimo e il massimo valore dei campi gravitazionali sono rispettivamente: \n %lf \t %lf \n", min(magn, n), max(magn, n));
printf("Gli elementi nulli presenti nel campo magnetico/gravitazionale sono rispettivamente: %d \t %d\n", count_null(magn, n), count_null(grav, m));
process_vector(grav, m, &j);
print_vector(grav, j);
system("PAUSE");
return 0;
}
grazie mille per l'aiuto