Also habe ich einen Code geschrieben, wo es eine Datei liest, die eine Reihe von Daten enthält. Danach habe ich die Daten auf 3 Dezimalstellen aufgerundet. Später habe ich versucht, den Durchschnitt der gerundeten Daten in bestimmten Bereichen zu ermitteln. Die Bereiche liegen zwischen 0, 0,5 und 0,5 bis 1,0 und .... Aber das Problem ist, dass wenn ich dies tue, es die abgerundeten Daten nicht verwendet und es die Rohdaten verwendet. Wie soll ich meinen Code ändern, damit er die abgerundeten Daten verwendet? Wie kann ich etwas machen, das die gerundeten Daten darstellt, damit ich es für den Rest meiner Kodierung verwenden kann? mein CodeVerwenden der gerundeten Daten für Durchschnittswerte
#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;
}
Ich kann sehen, wo Sie Code haben, um die abgerundeten Werte zu drucken(), aber nicht wo Sie tatsächlich die Werte im Array aufrunden? Auch Ihr Einzug benötigt Aufmerksamkeit - ich kann nicht klar sehen, wo main() beginnt/endet. –