wilkaro205
Grünschnabel
Hallo zusammen,
ich brauche dringend Hilfe bei einer Uni Übungsaufgabe und bin mit meinen Nerven am Ende.
Aufgabe:
Messwerte aus .txt Datei formatiert in ein Array einlesen, Mittelwerte bestimmen und diese in eine neue .txt Datei schreiben.
Auszug:
Jeder Sensor kommt mehr als 1x vor. Es sind ca. 300 Zeilen und 23 Sensoren.
So soll es später ausschauen:
aktueller Stand der DInge... :
Als Hilfestellung ist eine Funktion gegeben mit der die Mittelwerte berechnet werden können.
Jedoch hab ich momentan keine Ahnung, wie sie verwenden soll.
Seid bitte nicht zu streng, ich habe erst seit etwas 2 Monaten überhaupt was mit programmieren am Hut und mir ist bewusst, dass ich einige Dinge falsch mache und Verständnislücken habe, aber ich lerne noch.
Vielen Dank!
ich brauche dringend Hilfe bei einer Uni Übungsaufgabe und bin mit meinen Nerven am Ende.
Aufgabe:
Messwerte aus .txt Datei formatiert in ein Array einlesen, Mittelwerte bestimmen und diese in eine neue .txt Datei schreiben.
Auszug:
Code:
...
4;sensor#11;103;697;1481677565
5;sensor#13;104;696;1481677566
6;sensor#11;105;695;1481677566
7;sensor#6;106;694;1481677567
8;sensor#11;107;693;1481677567
...
So soll es später ausschauen:
Code:
sensor#1;mittelwert1;mittelwert2;mittelwert3
sensor#2;mittelwer1;mittelwert2;mittelwert3
...
aktueller Stand der DInge... :
C:
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#include <string.h>
#define MAX 299
typedef struct
{
int vk; // Vorkommawert
unsigned int nk; // Nachkommawert
} tMeasurement;
typedef struct
{
unsigned int nr; // fortlaufende Nummer
char sensorName[20];
tMeasurement measurement;
long timeStamp;
} tData;
int main()
{
int i;
FILE *protdat1;
FILE *mittelwert;
tData data[MAX]; // Array Messwert Daten
protdat1 = fopen("ProtDat1.txt", "r"); // prodat1 zum lesen öffnen
mittelwert = fopen("Mittelwert.txt", "w"); // mittelwert zum schreiben öffnen/erstellen
if (protdat1 == NULL)
{
fprintf(stderr, "\"ProtDat1\" konnte nicht geoeffnet werden.\n", protdat1);
system("PAUSE");
exit(1);
}
else
{
printf("\"ProtDat1\" wurde zum Lesen geoeffnet.\n");
for (i = 0; i < MAX && !feof(protdat1); i++)
{
//Formartiertes Einlesen der Datensätze
fscanf(protdat1, "%d;%20[^;];%d\n;%d;%d;%d\n", &data[i].nr, &data[i].sensorName, &data[i].measurement.vk, &data[i].measurement.nk, &data[i].timeStamp);
fprintf(stdout, "%d;%s;%d;%d;%d\n", data[i].nr, data[i].sensorName, data[i].measurement.vk, data[i].measurement.nk, data[i].timeStamp);
}
if (feof(protdat1) == 0)
{
fprintf(stdout, "\"ProtDat1\" wurde erfolgreich gelesen!\n");
}
else
{
fprintf(stderr, "\"ProtDat1\" konnte nicht gelesen werden!\n");
system("PAUSE");
exit(1);
}
}
fclose(protdat1);
fclose(mittelwert);
system("PAUSE");
return 0;
}
Als Hilfestellung ist eine Funktion gegeben mit der die Mittelwerte berechnet werden können.
Jedoch hab ich momentan keine Ahnung, wie sie verwenden soll.
C:
float calcAverage(char *sensorname, tData *data, int numData)
//bekommt als Argumente einen Sensornamen, das Array mit allen Datensätzen
//und die Anzahl der Datensätze übergeben und bestimmt als Rückgabewert
//den Mittelwert aller zum Sensornamen zugehörigen Messwerte.
//Ein Rückgabewert von 0 wird zurückgeliefert, wenn es zum übergegebenen
//Sensornamen keine Messwerte gab.
Seid bitte nicht zu streng, ich habe erst seit etwas 2 Monaten überhaupt was mit programmieren am Hut und mir ist bewusst, dass ich einige Dinge falsch mache und Verständnislücken habe, aber ich lerne noch.
Vielen Dank!