J'ai donc écrit un code où il lit un fichier contenant un ensemble de données. après cela, j'ai arrondi les données à 3 décimales. plus tard, j'ai essayé de prendre la moyenne des données arrondies dans certaines fourchettes spécifiques. Les plages sont comprises entre 0, 0,5 et 0,5 à 1,0 et .... Mais le problème est que lorsque je fais cela, il n'utilise pas les données arrondies et il utilise les données brutes. Comment devrais-je changer mon code afin qu'il utilise les données arrondies? Comment puis-je faire quelque chose qui représente les données arrondies afin que je puisse l'utiliser pour le reste de mon codage? mon code estUtilisation des données arrondies pour prendre des moyennes
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// Data size
#define MAX_ROWS 20
#define MAX_COLUMNS 20
#define LOW_ERROR 0.0
#define HIGH_ERROR 2.5
int main(void)
{
// Decalred variables
int rowIndex = 0;
int columnIndex = 0;
double rawData[MAX_ROWS][MAX_COLUMNS]; // 2-dimensional array to store our raw data
int decimalPlaces = 3;
float rangeValue[6] = { 0.0,0.5,1.0,1.5,2.0,2.5 };
int i, num = 0;
float total = 0.0, average;
// Print out the rawdata array
printf(" --- RAW DATA ---\n");
for (rowIndex = 0; rowIndex < MAX_ROWS; rowIndex++)
{
// Read up until the last value
for (columnIndex = 0; columnIndex < MAX_COLUMNS; columnIndex++)
{
printf("%.9lf ", rawData[rowIndex][columnIndex]);
}
printf("\n");
}
// Print out the roundup data array
printf(" --- ROUNDED DATA ---\n");
for (rowIndex = 0; rowIndex < MAX_ROWS; rowIndex++)
{
// Read up until the last value
for (columnIndex = 0; columnIndex < MAX_COLUMNS; columnIndex++)
{
if (rawData[rowIndex][columnIndex] < LOW_ERROR)
printf("%.3f ", LOW_ERROR);
else if (rawData[rowIndex][columnIndex] > HIGH_ERROR)
printf("%.3f ", HIGH_ERROR);
else
printf("%.3f ", ceil(rawData[rowIndex][columnIndex] * 1000.0)/1000.0);
}
printf("\n");
}
//Calculate and store the averages for each range
printf(" --- RANGE TABLE ---\n");
for (i = 0; i < 5; i++)
{
for (rowIndex = 0; rowIndex < MAX_ROWS; rowIndex++)
{
for (columnIndex = 0; columnIndex < MAX_COLUMNS; columnIndex++)
if (rawData[rowIndex][columnIndex] > rangeValue[i] && rawData[rowIndex][columnIndex] <= rangeValue[i + 1])
{
total = total + rawData[rowIndex][columnIndex];
num++;
}
}
average = total/num;
printf("%f \n", average);
total = 0;
average = 0;
num = 0;
}
return 0;
}
Je peux voir où vous avez du code pour imprimer() les valeurs arrondies, mais pas où vous arrondissez les valeurs dans le tableau? En outre, vous indentation besoin d'attention - je ne peux pas voir clairement où main() commence/finit. –