Statistik von ein text Datei in C

EmmaL

Grünschnabel
Hallo!
Ich habe eine text Datei wo eine Tabelle mit drei Spalten die folgende Informationen enthält dargestellt wurde; erste Spalte Jahren von typ integer, zweite Spalte Geschlecht represäntiert mit m oder f von typ char und dritte Spalte mit Körpergrösse von Typ double mit zwei Nachkommastellen. Diese Datei benutze ich in mein Programm und muss eine Statistik für diese text Datei machen. Ich habe schon in mein Funktion zwei schleifen, als Statistik für die Anzahl der Männer und Änzahl der Frauen geschrieben. Jetzt habe ich keine Idee wie ich den Durschnittswert von der Jahre berechnen kann. Ich habe probiert diese Text Datei in ein integer zu konvertieren. Dann sind die Jahre alle Zahlen >1950 und <1990 aber ich weiss nicht wie ich diese Jahre dann summiere. Ähnlich dazu ist die berechnung von Durchschnittswert von Körpergrösse von Männer und dann Körpergrösse von Frauen.
Ich würde mich sehr freuen wenn ich dann mit Hilfe von Ihre Erklärungen eine Idee habe das Programm bis Ende zu schreiben.
Vielen Dank im Voraus.
 
Ja, erste Spalte für die Geburtsjahre.
Ich habe in ein struct Statistics alle 5 Daten die ich berechnen muss definiert. Also die Anzahl der Männer, Anzahl der Frauen, Average für Geburtsjahren, average für Körpergröße von Männer und average Körpergröße von Frauen.
void print_statistics(struct Statistics statistics); <- das als Funktion für die formatierten Ausgaben
struct Statistics compute_statistics(String table); <- das ist Hauptfunktion
So habe ich zum Beispiel Anzahl der Männer berechnet.
for(int i = 0; i < Length; i++){
if ((s_get(table, i)) == 'm') {
number_males = number_males + 1;
}
}

Und am Ende gibt es ein int main (void) {}
Wo die Text Datei und die Funktionen von mein Porgramm aufgerufen werden.
 
Hi

Wie hast du denn dein Programm bisher aufgebaut?
Der gute sheel meinte damit wohl eher den gesamten Code, nicht solche kleinen Ausschnitte. Du kannst den Code mittels Codetags [code=cpp][/code] hier einfügen.

Warum hast du nur bei den Jahren das Problem (ist es eigentlich Geburtsjahr oder Alter?)? Die Averages funktionieren ja immer gleich.

Die mathematische Grundlage für den Durchschnitt ist
Summe von allen Werten durch Anzahl Werte. Da dies Integer sind, wird halt abgerundet. Falls du es tatsächlich genau haben willst, kannst du aber auch mit floats oder doubles rechnen.

Also in Code etwa so:
C++:
int sum = 0:
for(size_t i = 0; i < Length; i++) {
sum += value(i);
}
int avg = sum / Length;

Ich habe schon in mein Funktion zwei schleifen, als Statistik für die Anzahl der Männer und Änzahl der Frauen geschrieben.
Ach, ich muss es einfach sagen: Würdest du dir bitte ein wenig mehr Mühe geben, deine Gedanken ordentlich und in einer mehr oder weniger korrekten Grammatik zu Papier / Arbeitsspeicher zu bringen? Es ermüdet sehr, dies zu lesen und zu verarbeiten.

Aber: 2 Schleifen sind der falsche Ansatz. Du kannst alle Menschen in einer Schleife lesen und dann zuteilen.

Ich habe probiert diese Text Datei in ein integer zu konvertieren.
?
Du meinst, du hast mittels scanf() o.ä. den Wert ausgelesen? Das ist korrekt so. Nun musst du die Werte halt nur noch verwenden.(Eine Textdatei kann man nicht zu Integern konvertieren, unter anderem, weil eine Textdatei schon aus Integern besteht -> ASCII)
Dann sind die Jahre alle Zahlen >1950 und <1990 aber ich weiss nicht wie ich diese Jahre dann summiere.
Das mit den genauen Jahreszahlen ist eine Präzisierung, die du nicht machen musst. Du muss nicht wissen, was der Bereich der Werte ist, um den Durchschnitt zu berechnen. Und du weisst nicht, wie man sie summiert? Wer hat denn deinen bisherigen Code geschrieben? Da summierst du ja auch schon?!

Und äh... "String table" hat einen recht komischen Typ...
Wenn dir der Hinweis, wie du Durchschnitte berechnen kannst, reicht, dann ist ja alles gut. Ansonsten müssen wir den gesamten Code sehen.

Gruss
cwriter
 
Zurück