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; }
|
|