função prepare ReadDat () para conseguir ler 1000 decimal inteiro de arquivo IN.DAT em uma matriz em xx:
Por favor, prepare a função Compute () é calculado, respectivamente, em um número par de xx mesmo, o valor médio AVE1 estranho, de número par eo ave2 valor médio de totfc variância, após a WriteDat chamada de função () OUT.DAT emite o resultado para um arquivo.
Calculando a variância da seguinte fórmula:
N_____2
totfc = 1 / NΣ (xx [i] -ave2)
i = 1, desde que N é um número par de, xx [i] é um número par, ave2 um valor médio mesmo.
O formato dos ficheiros de dados originais: cada número de linha de armazenamento 10, e separados por vírgulas. (Cada número maior do que 0 e menos do que ou igual a 2,000).
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 1000
int xx [MAX], impar = 0, mesmo = 0;
double ave1 = 0,0, ave2 = 0,0, totfc = 0,0;
WriteDat vazio (void);
int ReadDat (void) {int i; FILE * fp;
if ((fp = fopen ( “IN.DAT”, “r”)) == NULL) retornar 1;
/ Função compilado ReadDat () de secção *** /
for (i = 0; i <MAX; i ++)
{Fscanf (fp, "% d",, & xx [i]);
if ((i + 1) 10% == 0)
fscanf (fp, "\ n"); }
/ ******************************************* /
fclose (fp);
return 0;
}
vazio Compute (void)
{Int i, YY [MAX];
for (i = 0; i <MAX; i ++)
yy [i] = 0;
for (i = 0;
i <MAX; i ++)
if (xx [i]% 2 == 0) {aa [mesmo ++] = xx [i]; ave2 + = xx [i];}
else {estranho ++; ave1 + = xx [i];}
se (ímpar == 0) ave1 = 0;
outra ave1 / = estranho;
se (mesmo == 0) ave2 = 0;
outra ave2 / = mesmo;
for (i = 0; i <mesmo; i ++)
totfc + = (yy [i] -ave2) * (yy [i] -ave2) / mesmo;
}
void main ()
{
int i;
for (i = 0; i <MAX; i ++) xx [i] = 0;
if (ReadDat ()) {
printf ( "arquivo de dados IN.DAT não pode ser aberto \ 007 \ n!");
Retorna;
}
Calcular();
printf ( “FORNO =% d \ nAVE1 =% f \ nAVER2 =% f \ nTOTFC =% f \ n”, mesmo, ave1, ave2, totfc);
WriteDat ();
}
vazio WriteDat (void)
{
FILE * fp;
int i;
fp = fopen ( “OUT.DAT”, “W”);
fprintf (fp, "% d \ n% f \ n% f \ n% f \ n", mesmo, ave1, ave2, totfc);
fclose (fp);
}