Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Daten aus Binärdatei auslesen+sortieren

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
30.11.2006, 20:29 Uhr
~voodoopuppe
Gast


Hallihallo,

ich habe ein Problem:
Ich muss für's Studium ein Programm schreiben, welches eine Binärdatei ausliest und die ausgelesenen Daten dann nach bestimmten Gesichtspunkten sortiert.

Jetzt habe ich wie gesagt diese Binärdatei in meinem C-Programm geöffnet, funktioniert auch einwandfrei, und möchte nun meine Daten sortiert ausgeben.

Ich werfe jetzt erstmal die benötigte Struktur hier in den Raum:

Code:
struct Satz{
char Filiale[21];
float Umsatz;
float Bestand;
float Beschaeftigte;
float Loehne;
unsigned short Quadratmeter;
float Anlagevermoegen;
}__attribute__ ((packed));


Ich möchte nun meine Datensätze nach dem Umsatz sortiert ausgeben.
Habe es schon versucht mit einem eigenen Sortieralgorithmus (einfach ne Vorschleife und geprüft, ob die derzeitige Zahl größer oder kleiner ist als die vorhergehende...), das hat aber nicht geklappt, weil so zwar die Umsätze richtig ausgegeben werden, jedoch nicht die dazugehörigen Filialen z.B..

Kurz gesagt: Ich möchte, dass die Datensätze sortiert nach der Größe des Umsatzes ausgegeben werden und zwar da wo der größte Umsatz ist als erste und der kleinste Umsatz als kleinstes.

Wie stelle ich das an?


Die Datei Handel.dat bekommt ihr hier: www.voodoo4u.net/Handel.dat
Abschließend noch mein derzeitiger Code:

Code:
#include <stdio.h>
//#include <stdlib.h>
#include <conio.h>
#define N 10

float Arbeitseffektivitaet;
float Mitarbeiterlohn;

struct Satz{
char Filiale[21];
float Umsatz;
float Bestand;
float Beschaeftigte;
float Loehne;
unsigned short Quadratmeter;
float Anlagevermoegen;
}__attribute__ ((packed));

int Ausgabe1()
{
struct Satz myRECORD; // C style structure declaration
FILE *fh;
int num_read;

fh = fopen("Handel.dat","rb");
while (!feof(fh))
{
num_read=fread(&myRECORD,sizeof(myRECORD),1,fh);
Arbeitseffektivitaet = (myRECORD.Umsatz/myRECORD.Beschaeftigte);
Mitarbeiterlohn = (myRECORD.Loehne/myRECORD.Beschaeftigte);
printf("Filiale:               %s\n",myRECORD.Filiale);
printf("Umsatz:                %f\n",myRECORD.Umsatz);
printf("Bestand:               %f\n",myRECORD.Bestand);
printf("Beschaeftigte:         %f\n",myRECORD.Beschaeftigte);
printf("Loehne:                %f\n",myRECORD.Loehne);
//printf("Groesse:               %i\n",myRECORD.Quadratmeter);
//printf("Anlagevermoegen:       %f\n",myRECORD.Anlagevermoegen);
printf("Mitarbeiterlohn:       %f\n",Mitarbeiterlohn);
printf("Arbeiteseffektivitaet: %f\n\n",Arbeitseffektivitaet);
getch();
}
fclose(fh);
getch();
}

MenueSortedBy()
{
  char menuewahl;
  printf("Bitte treffen Sie Ihre Wahl:\n"
         "1) Filialen nach Umsatz sortieren\n"
         "2) bla\n"
         "3) bla2\n"
         "Ihre Auswahl: ");
        
  do
    {
    menuewahl = getche();
    printf("\b");
    }
  while ((menuewahl != '1') && (menuewahl != '2') && (menuewahl != '3'));
  
  if (menuewahl == '1')
  {
  printf("\n\n");
  Ausgabe1();
  }

}

int main()
{
MenueSortedBy();

getch();
return 0;
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
30.11.2006, 22:48 Uhr
Blubber2063



Erste frage was für eine Datenstruktur willst du sortieren, ne Liste oder ein Array. Dann empfehle ich dir mal die Begriffe Quicksort, Heapsort, Insertion Sort, Bubblesort zu googeln. Um nur mal ein paar bekannte vertreter zu nennen. Wobei Quick und Heapsort die schnellsten der genannten Verfahren sind.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
01.12.2006, 10:52 Uhr
~voodoopuppe
Gast


Ich wollte es gern als Array umschreiben und dann sortiert ausgeben.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: