Uhrzeit in Diagramm darstellen

azoul

Grünschnabel
hallo leute,
ich habe eine Textdatei, die durch ein Programm eingehängt wird. die Textdatei besteht aus zeilen mit Uhrzeit und eine zeichen S oder F am anfang also so z.B.
10:30:24 S .......
10:50:12 F .......
10:55:44 S .......
11:12:05 S .......

will ein Programm schreiben, das mir die das 'S' zeichen aus der Zeilen ausliest und zählt die im gleichen Zeitraum sind.im Beispiel taucht S zeichen in zwei Zeilen in zeitraum zwischen 10 und 11 uhr.
und das will in als diagramm darstellen. also in Y-achse die Häufigkeit der Zeichen S und in X-achse die zeit.
hat jemand eine idee wie ich das in C realisieren kann.
 
Hi,

also hier ganz grob mal mein Ansatz:

1. halte dir erstmal ein Array von Integerwerten und initialisiere diese mit nullen
Dieses Array hält dann die Häufigkeiten der Vorkommen in deiner Textdatei

Code:
  int hours[24]; // 24 int Elemente, für jede Stunde eins
  .
  .
  .
  // Alle Werte deines Arrays mit 0-en initialisieren
 for( int i = 0; i < 24; i++ ) {
    hours[i] = 0;
  }

2. Zerteile den String beim ersten Leerzeichen. So hast du einmal die Zeit (10:20:15 ...) und diesen Buchstaben (was auch immer dieser bedeuten mag)

3. Für JedeZeile, welche hinten dieses S hat ermittels du die Zeichen bis zum ersten Vorkommen eines Doppelpunktes. Dann erhälst du bei die Zeichenkette "10"

4. Diese Zeichenkette wandelst du dir in einen Integer Wert um

Code:
 int value = atoi(szHour); Die zeichenkette aus Punkt 3 ist in der Variablen szHour festgehalten

5. Inkrementiere den entsprechenden Wert in deinem Array

Code:
  hours[value]++; // Das zehnte Element (10 Uhr) wird um 1 erhöht

Nachdem du alle Zeilen so ausgewertet hast, stehen in deinem Array nun die Häufigkeiten der Vorkommen für jede Stunde.

Also das 1 Element heisst von 0-1 Uhr
das 2. Element heisst 1-2 Uhr u.s.w.

Das Zeichnen des Diagramms ist eine ganz andere Geschichte.

Dafür schreibst dir eine eigene Fensterklasse, in welcher du mittels der GDI-Funktionen MoveTo, LineTo, FillSolidRect und DrawText deine Linien, Balken und texte zeichnest.

Aber wenn du dabei Probleme bekommen solltest wirst du das sicherlich noch mal posten ;-)

Bis dahin viel Erfolg,

Pit
 
Zurück