Code:
//Preprocessing directives
#include <stdio.h> /* header file */
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include "calc_stats.h"
// function prototypes
//opens the input and output files
void open_files(FILE **fp_in, char filename_in[], FILE **fp_out, char filename_out[]);
//gets the data inputs from a string that is read from the data file
void get_tokens(char string1[], double data_array[][12], double stats[][6], int row);
//calculate the results
void calc_stats(double data_array[][12], double stats[][6], int number_rows);
//write the output
void write_Data(FILE *fp_out, double data_array_transposed[][10], double stats_transposed[][10], int array_rows, int array_columns);
int main(void)
{
char filename_in[35] = "test_data.txt" ;//initialize to test_data.txt
char filename_out[35] = "test_stats.txt";
char string1[90];
int array_rows = 10;
int array_columns = 12;
int stats_columns = 6;
int temp;
int j=0, k;
double data_array[10][12] = {0.0};
double data_array_transposed[12][10] = {0.0};
double stats[10][6];
double stats_transposed[6][10];
FILE *fp_in, *fp_out;
open_files(**fp_in, filename_in, **fp_out, filename_out);
while(fgets(string1, 90, fp_in) != NULL);
{
get_tokens(string1, data_array, stats, array_rows);
calc_stats(data_array, stats, array_rows);
}
for(j=0;j<array_rows;j++);
{
for(k=0;k<array_columns;k++);
data_array_transposed[k][j] = data_array[j][k];
}
for(j=0;j<array_rows;j++);
{
for(k=0;k<stats_columns;k++);
stats_transposed[k][j] = stats [j][k];
}
temp = array_rows;
array_rows = array_columns;
array_columns = temp;
write_data(fp_out, data_array_transposed, stats_transposed, array_rows, array_columns);
fclose(fp_in);
fclose(fp_out);
printf("Exiting the program");
return 0;
}
void open_files(FILE **fp_in, char filename_in[], FILE **fp_out, char filename_out[])
{
*fp_in=fopen("filename_in","r");
if((*fp_in = fopen("filename_in", "r")) == NULL)
{
// display error message
printf("\nERROR: Input file not opened\n");
// abort
exit(EXIT_FAILURE);
}
*fp_out=fopen("filename_out","w");
if((*fp_in = fopen("filename_out", "w")) == NULL)
{
// display error message
printf("\nERROR: Input file not opened\n");
// abort
exit(EXIT_FAILURE);
}
}
void get_tokens(char string1[], double data_array[][12], double stats[][6], int row)
{
int k = 0;
char *tokenPtr;
tokenPtr = strtok(string1, " ");
while(tokenPtr != NULL)
{
data_array[row][k] = atof(tokenPtr);
tokenPtr = strtok(NULL, " ");
k++;
}
stats[row][0]=k;
}
void calc_stats(double data_array[][12], double stats[][6], int number_rows)
{
int j;
for(j=0; j<number_rows;j++)
{
calc_min(data_array, stats, number_rows);
calc_max(data_array, stats, number_rows);
calc_range(data_array, stats, number_rows);
calc_average(data_array, stats, number_rows);
calc_std_dev(data_array, stats, number_rows);
}
}
void write_data(FILE *fp_out, double data_array_transposed[][10], double stats_transposed[][10], int array_rows, int array_columns)
{
int j, k;
printf("\n\t\t************** Test Results ***************\n");
fprintf(fp_out, "\n\n\t************** Test Results ***************\n");
for(j=0;k<array_columns;j++)
{
printf("test%i",j+1);
fprintf(fp_out, "test%i", j+1);
printf("\n\n");
fprintf(fp_out, "\n\n");
}
for(j=0; j<array_rows; j++)
{
for(k=0; k<array_columns;k++)
if(data_array_transposed[j][k]==0)
{
printf(" ");
fprintf(fp_out, " ");
}
else
{
printf("%6.2lf", data_array_transposed[j][k]);
fprintf(fp_out, "%6.2lf", data_array_transposed[j][k]);
}
}
printf("\n");
fprintf(fp_out, "\n");
printf("\n\t\t********* Number tests in each set *********\n");
fprintf(fp_out, "\n\t\t********* Number tests in each set *********\n");
for(j=0;j<array_columns;j++)
{
printf("%6.2lf", stats_transposed[0][j]);
fprintf(fp_out, "%6.2lf", stats_transposed[0][j]);
}
printf("n\n\t\t*********** Minimum for each set ***********\n");
fprintf(fp_out, "n\n\t\t*********** Minimum for each set ***********\n");
for(j=0; j<array_columns;j++)
{
printf("%6.2lf", stats_transposed[1][j]);
fprintf(fp_out, "%6.2lf", stats_transposed[1][j]);
}
printf("\n\n\t\t*********** Maximum for each set ***********\n");
fprintf(fp_out, "\n\n\t\t*********** Maximum for each set ***********\n");
for(j=0;j<array_columns;j++)
{
printf("%6.2lf", stats_transposed[2][j]);
fprintf(fp_out, "%6.2lf", stats_transposed[2][j]);
}
printf("\n\n\t\t************ Range for each set ************\n");
fprintf(fp_out, "\n\n\t\t************ Range for each set ************\n");
for(j=0;j<array_columns;j++)
{
printf("%6.2lf", stats_transposed[3][j]);
fprintf(fp_out, "%6.2lf", stats_transposed[3][j]);
}
printf("\n\n\t\t*********** Average for each set ***********\n");
fprintf(fp_out, "\n\n\t\t*********** Average for each set ***********\n");
for(j=0;j<array_columns;j++)
{
printf("%6.2lf", stats_transposed[4][j]);
fprintf(fp_out, "%6.2lf", stats_transposed[4][j]);
}
printf("\n\n\t\t******** Standard Dev for each set ********\n");
fprintf(fp_out, "\n\n\t\t******** Standard Dev for each set ********\n");
for(j=0;j<array_columns;j++)
{
printf("%6.2lf", stats_transposed[5][j]);
fprintf(fp_out, "%6.2lf", stats_transposed[5][j]);
}
printf("\n");
fprintf(fp_out, "\n");
}
I have not included the calc_stats.h file with this, I can if need be. The errors I'm getting are