Brauche dringend HILFE!!!
-
Hallo erstmal. Bin neu hier im Forum.
Ich habe ein SEHR großes Problem... Ich muss bis Freitag eine Aufgabe abgeben und ich habe keine Idee wie ich das realisieren soll.
Kann mir bitte jemand helfen??? Wenn ich die Aufgabe nicht abgebe bekomme ich keine Prüfungszulassung und das wäre sehr schlecht.
Hier ist mal ein Link da steht die Aufgabe und die dazugehörige VERTRAG.DAT Datei enthalten.
http://rapidshare.com/files/333681544/aufgabe.rar
Ich bitte euch...... Das ist wichtig für meine Zukunft.
MfG
-
SlotRacer schrieb:
zeig mal lieber code. die .exe zu disassemblen hat bestimmt keiner lust *fg*
-
die exe ist nur ein tool um die VERTRAG.DAT zu öffnen. Aber ich werd den Inhalt der VERTRAG.DAT einfach mal posten. Das andere ist nur eine txt datei.
-
Inhalt der VERTRAG.DAT
Struktur:
struct vertrag
{
char vertrnr[7];
char art[21];
char liiferant[21];
unsigned short vertagsmenge;
unsigned short liefertermin[3];
unsigned short liefermenge;
};Inhalt:
EAN: 512621
Beteichnung: Schokorosinen
Lieferant: Waldbaur
Bestand: 300
Liefermenge: 200EAN: 512622
Beteichnung: Ritter-Rum
Lieferant: Ritter
Bestand: 280
Liefermenge: 290EAN: 512623
Beteichnung: Ritter-Sport
Lieferant: Ritter
Bestand: 935
Liefermenge: 935EAN: 512624
Beteichnung: MonCheri
Lieferant: Ferrero
Bestand: 100
Liefermenge: 100EAN: 512625
Beteichnung: Raffaello
Lieferant: Ferrero
Bestand: 520
Liefermenge: 0EAN: 512626
Beteichnung: Pr„sent
Lieferant: Piasten
Bestand: 130
Liefermenge: 0EAN: 512627
Beteichnung: Weinbrandbohnen
Lieferant: Wissoll
Bestand: 255
Liefermenge: 235EAN: 512628
Beteichnung: Goldb„ren
Lieferant: Harribo
Bestand: 95
Liefermenge: 0EAN: 512629
Beteichnung: Elisenlebkuchen
Lieferant: Schmidt
Bestand: 850
Liefermenge: 0EAN: 512630
Beteichnung: Teefix-Zitrone
Lieferant: Teekanne
Bestand: 150
Liefermenge: 50EAN: 572311
Beteichnung: Earl-Grey-Tea
Lieferant: Milford
Bestand: 50
Liefermenge: 0EAN: 572312
Beteichnung: Darjeeling-Tea
Lieferant: Messmer
Bestand: 750
Liefermenge: 0EAN: 572313
Beteichnung: Frchtetee
Lieferant: Flensburger Teekonto
Bestand: 30
Liefermenge: 30EAN: 572314
Beteichnung: Hibiskus-Tee
Lieferant: Mller KG
Bestand: 95
Liefermenge: 95EAN: 572315
Beteichnung: Erdbeer-Frchtetee
Lieferant: Tropical
Bestand: 200
Liefermenge: 30EAN: 572316
Beteichnung: Grner Chinatee
Lieferant: Milford
Bestand: 300
Liefermenge: 305EAN: 572317
Beteichnung: Assam-Tea
Lieferant: Messmer
Bestand: 225
Liefermenge: 0EAN: 572318
Beteichnung: Raffaello
Lieferant: Ferrero
Bestand: 775
Liefermenge: 0EAN: 572319
Beteichnung: Capuccino Tasse
Lieferant: Krger GmbH & Co. KG
Bestand: 940
Liefermenge: 0EAN: 572320
Beteichnung: Kaba-Schokotrunk
Lieferant: Nestl‚
Bestand: 300
Liefermenge: 0
-
Und du kommst jetzt erst auf die Idee, was zu machen (bzw. es andere machen zu lassen)? Und hast vermutlich noch keinen Ansatz produziert?
-
Naja tut mir ja leid aber ich finde einfach keinen richtigen Ansatz. Ich will nicht das es jemand für mich macht. Aber ich brauch einen Ansatz.
-
SlotRacer schrieb:
Aber ich brauch einen Ansatz.
dann lies schieb erstmal die datei in die structs rein (mit fopen, fread, fscanf, usw.) schau hier: http://www.cppreference.com/wiki/c/io/fopen
-
Ich muss bis Freitag eine Aufgabe abgeben
Die du uns noch nicht verraten hast. Nein, ich lade die rar-Datei nicht herunter und entpacke sie. Ist mir einfach zu aufwendig.
-
Ich muss bis Freitag eine Aufgabe abgeben und ich habe keine Idee wie ich das realisieren soll.
eine woche sollte doch locker reichen
EAN: 512621
entweder stimmt die bezeichnung nicht oder die nummer? du solltest mal abklären was das soll...
ich würd dir ja dabei helfen, nur schauts dann bei der prüfung nicht rosig aus...
also zeig mal was du schon hast dann können wir ja mal schauen wie weit wir kommen;)btw. ich kann die datei nicht runterladen bin kein premium member und es sind wie so häufig keine free slots frei...
also ich rate einfach mal du hast eine *.DAT datei die du in ein prog. mit der structur vertrag einlesen sollst, kann das sein?
lg lolo
-
also ich bin ja kein unmensch, daher hab ich das mal runtergeladen und poste mal was hier zu machen ist
Aufgabe.txt schrieb:
VERTRAG.C
Entwickeln Sie ein interaktives C-Programm zur
Kontrolle der Vertragstreue von Lieferanten
Unter Nutzung der vorhandenen Datei VERTRAG.DAT sind wahlweise anzuzeigen:
- die Namen aller Hauptlieferanten (Vertragsmenge im Bsp. > 500)
- alle Angaben zu Verträgen mit einem Lieferanten, vom Nutzer aus einer
alphabetisch sortierten Liste aller Lieferanten zu wählen, geordnet nach Artikeln
und unter Auflistung der Gesamtvertragsmenge bei Mehrfachlieferung einesArtikels,
- die Namen aller Lieferanten bei denen bis zu einem, vom Nutzer einzugebenden
Termin keine Abweichungen zwischen Vertrags- und Liefermenge auftraten.Hinweis:
Die Datei VERTRAG.DAT befindet sich auf dem Server (Unterverzeichnis
Aufgaben/Daten). Lesen Sie dazu auch die Datei Hinweise.doc / .pdf!
Die Datei hat dabei folgende Struktur:
struct Satz
{
char Vertragsnummer[7];
char Artikel[21];
char Lieferant[21];
short Vertragsmenge;
short Liefertermin[3];
short Liefermenge;
};axo ja also in der datei sind einfach die plain structs reingeschrieben...
-
^^irgendwann klickt noch einer aus versehen auf die .exe. das will er doch nur *fg*
-
@noobLolo
Ja genau so is es... Bin grad dabei ich poste dann mal was ich hab. Also ich bin in C eigendlich immer ganz gut mitgekommen, aber das die Aufgabe so (für mich) kompliziert ist hab ich nicht gedacht.
Ich dank euch schonmal das ihr euch überhaupt damnit beschäftigt.
-
@fricky;
^^ ja ich habs auch schon probiert, aber leider mag mein system keine *.exe daher bin ich immun gegen solche art von angriffen
-
@;fricky
nein das will ich nicht...Muss ja auch keiner machen. Und ich hab alles andere im Sinn als irgendwelche bösen absichten. Wie ich oben schon mal gepostet hab ist diese exe nur zum öffnen der .dat. aber da ich den Inhalt oben schon gepostet hab, brauch auch niemand die exe öffnen....
Sry dafür
-
@SlotRacer
den inhalt der VERTRAGS.DAT welchen du gepostet hast stimmt nicht...
so schauts bei mir aus, natürlich mir vi el fantasie...512621@Schokorosinen@BÜO<9e> @@Waldbaur@<8c>@P0L^^L@@@@0,AS@D@[@È@512622@Ritter-Rum@en@BÜ^O<9e> @@Ritter@r@<8c>@P0L^L@@@@0XAC@E@[@"A512623@Ritter-Sport@@BÜO<9e>
....
-
Versteh ich nicht! Was stimmt da nicht? Hab die VERTRAG.DAT so bekommen und ich soll sie so benutzen. Hab keine Ahnung was du genau meinst.
-
SlotRacer schrieb:
Inhalt der VERTRAG.DAT
Inhalt:
EAN: 512621
Beteichnung: Schokorosinen
Lieferant: Waldbaur
Bestand: 300
Liefermenge: 200EAN: 512622
Beteichnung: Ritter-Rum
Lieferant: Ritter
Bestand: 280
Liefermenge: 290...
es schaut aber so aus wie in meinem letzten post, ich war schon drauf und dran das teil zeilenweise inzulesen...
hab das gerade gefunden, das hatte nwp2 mal in nem anderen post gepostet
nwp2 schrieb:
char *readFile(const char *filename){ //code heavily changed from http://www.cplusplus.com/reference/clibrary/cstdio/fread/ FILE *file = fopen(filename, "rb"); if (!file) return 0; //get file size fseek(file, 0, SEEK_END); size_t filesize = ftell(file); //files >4GB? rewind(file); //get memory to contain the whole file char *buffer = (char*)malloc(filesize+1); if (!buffer) return 0; //read file if (fread(buffer, 1, filesize+1, file)!=filesize){ free(buffer); fclose(file); return 0; } //clean up fclose(file); buffer[filesize] = '\0'; return buffer; }
evtl. kannst das ja brauchen
-
Also bin jetzt bis hierhin gekommen:
#include <stdio.h> struct vertrag //Einlesen der Struktur { char vertrnr[7]; char art[21]; char liiferant[21]; unsigned short vertagsmenge; unsigned short liefertermin[3]; unsigned short liefermenge; }__attribute__((packed))vertrag; int main(int argc, char *argv[]) { char Auswahl; int i; i=1; FILE*Dateiptr; char *datei_auswahl= "vertrag.dat"; if (!(Dateiptr = fopen(datei_auswahl,"rb"))) { printf("Beim oeffnen der Datei %s ist ein Fehler aufgetreten.\n", datei_auswahl); getch(); } else while (fread(&vertrag, sizeof(vertrag),1, Dateiptr) == 1) { printf("Dateinummer: %d\n",i++); printf("\nEAN: \t\t%s",vertrag.vertrnr); printf("\nBezeichnung: \t%s",vertrag.art); printf("\nLieferant: \t%s",vertrag.liiferant); printf("\nBestand: \t%d",vertrag.vertagsmenge); printf("\nLiefermenge: \t%d\n\n",vertrag.liefermenge); getch(); } getch(); return(0); };
Jetzt muss ich die folgenden Aufgaben lösen:
- die Namen aller Hauptlieferanten (Vertragsmenge im Bsp. > 500)
- alle Angaben zu Verträgen mit einem Lieferanten, vom Nutzer aus einer
alphabetisch sortierten Liste aller Lieferanten zu wählen, geordnet nach Artikeln
und unter Auflistung der Gesamtvertragsmenge bei Mehrfachlieferung eines
Artikels,
- die Namen aller Lieferanten bei denen bis zu einem, vom Nutzer einzugebenden
Termin keine Abweichungen zwischen Vertrags- und Liefermenge auftraten.
-
was soll denn das denke das muß raus?
__attribute__((packed))
int main(void){ ... i=1; //statt i=0; ... struct vertrag dataCache[1024] = {}; ... while (fread(&dataCache[i], sizeof(vertrag),1, Dateiptr) == 1) { printf("Dateinummer: %d\n",i); printf("\nEAN: \t\t%s",dataCache[i].vertrnr); printf("\nBezeichnung: \t%s",dataCache[i].art); printf("\nLieferant: \t%s",dataCache[i].liiferant); printf("\nBestand: \t%d",dataCache[i].vertagsmenge); printf("\nLiefermenge: \t%d\n\n",dataCache[i].liefermenge); getch();//hm wieso machst am besten alles raus?? i++; } ... }
dann ist alles schon mal im array
-
Das packed attribut sorgt IIRC dafür, dass keine leeren füllbytes in dem Struct eingefügt werden.