Brauche dringend HILFE!!!
-
also ich fand die aufgabe jetzt nicht ganz easy, also blutiger anfänger kann er ja auch nicht mehr sein, also wir werden sehen wann er sich wieder blicken lässt hab ja die befürchtung dass er vor morgen nichtmehr online ist
glaub dem hats gereicht für heute
-
so kann man sich täuschen
also deinen letzten code hab ich ein bischen umgebaut, das ergebnis poste ich mal...
int readEntrys(char *fileName,struct vertrag dataCache[],int maxLength){ int i=0; FILE*Dateiptr; if(!(Dateiptr = fopen(fileName,"rb"))) { printf("Beim oeffnen der Datei %s ist ein Fehler aufgetreten.\n", fileName); } else while(fread(&dataCache[i], sizeof(struct vertrag),1, Dateiptr) == 1) i++; return i--; } void plotEntryRow(struct vertrag dataCache[]){ int i=0; printf( "%12d\t" "%7s\t" "%21s\t" "%21s\t" "%12d\t" "%12d\t" "%2d." "%2d." "%4d" "\n" ,i ,dataCache[i].vertrnr ,dataCache[i].art ,dataCache[i].liiferant ,dataCache[i].vertagsmenge ,dataCache[i].liefermenge ,dataCache[i].liefertermin[0] ,dataCache[i].liefertermin[1] ,dataCache[i].liefertermin[2] ); } void plotEntrys(struct vertrag dataCache[],int length){ int i=0; printf( "%12s\t" "%7s\t" "%21s\t" "%21s\t" "%12s\t" "%12s\t" "%10s\t" "\n\n" ,"nr." ,"vnr." ,"artikel" ,"lieferant" ,"vertragsm." ,"lieferm." ,"ltermin." ); while(i<length) plotEntryRow(&dataCache[i++]); printf( "EOL>>----------------------------------------------------------" "-------------------------------------------------------------" "\n\n"); } int main(int argc, char *argv[]) { struct vertrag dataCache[1024] = {}; int dataCacheLength; dataCacheLength = readEntrys("VERTRAG.DAT",dataCache,1023); plotEntrys(dataCache,dataCacheLength); return 0; };
-
@ noobLolo
Bin doch noch da und voller Elahn ;-). Ich zerbrech mir nur schon ewig den Kopf und es ist sehr deprimierend wenn das alles nichts bringt.
-
ja also dann erklär mal wo dein problem liegt, ich kanns dir sogar sagen du willst nicht sortieren...
-
Doch wollen schon aber ehrlich gesagt hasb ich NULL Ahnung WIE!!!
Das ist mein Problem. Ich blättere schon die ganze Zeit in nem Buch und such im Netz, aber so richtig werd ich da nicht schlau drauß.
-
nachdem wir ein array genommen haben und keine liste funktioniert das ganz easy mit qsort
.-das array | .-länge des arrays qsort(dataCache,l,sizeof(struct vertrag),cmp); '-größe eines array '-vergleichs function ungefähr so int (*cmp)(void *,void *){} eintrags
-
Also deinen letzten Post hab ich noch nicht richtig verstanden.... Blicke isrgendwie nicht so richtig durch den ganzen wirrwar :-).
-
also ersmal brauchst du eine vergleichs function, welche qsort sagt ob a größer b oder anders herum, das schaut dann z.b. für die liefermege so aus
int compareLiefermenge(void *a,void *b){ struct vertrag *ax = a; struct vertrag *bx = b; return ax->liefermenge-bx->liefermenge; }
ich weiß das ist nicht 100% sicher da überlauf aber ok...
dann mußt du qsort füttern also so...
qsort(dataCache,dataCacheLength,sizeof(struct vertrag),compareLiefermenge);
versuch das doch mal in der main z.b. so
int main(void){ ... plotEntrys(dataCache,dataCacheLength); qsort(dataCache,dataCacheLength,sizeof(struct vertrag),compareLiefermenge); plotEntrys(dataCache,dataCacheLength); ... }
-
int compareLiiferant(void *a,void *b){ struct vertrag *ax = a; struct vertrag *bx = b; return strcmp (ax->liiferant,bx->liiferant); }
:xmas1:
-
noobLolo schrieb:
also deinen letzten code hab ich ein bischen umgebaut, das ergebnis poste ich mal...
Ganz ohne Abbruchbedingung in readEntrys, tsts...
Ein bisschen unflexibel, findest du nicht? Wenn 1024 Verträge abgeschlossen sind, dann macht die Firma eventuell Verluste, weil plötzlich die Software streikt.
Bis zum 2048-Verträge-Release ist sie vielleicht schon bankrott.
-
noobLolo schrieb:
nachdem wir ein array genommen haben und keine liste...
sag bloss, hier hat wieder einer mit linked lists angefangen. und wenn ja, lass mich raten, wer's war... *fg*
-
Hey ich hab heute keine Lust mehr. Werde mich morgen wieder melden....
Danke erstmal an euch alle hier. Ich hoffe ich kann morgen auch noch auf euch zählen.MfG
-
Big Brother schrieb:
Ganz ohne Abbruchbedingung in readEntrys, tsts...
while(maxLength-- && fread(&dataCache[i], sizeof(struct vertrag),1, Dateiptr) == 1) statt while(fread(&dataCache[i], sizeof(struct vertrag),1, Dateiptr) == 1)
sollte es ein bischen besser machen, ja ich hatte schon daran gedacht aber ist dann in vergessenheit geraten
jetzt hab ich extra, und ums mir einfach zu machen ein array genommen und dann bekomm ich doch wieder einen auf die mütze
-
noobLolo schrieb:
jetzt hab ich extra, und ums mir einfach zu machen ein array genommen und dann bekomm ich doch wieder einen auf die mütze
:p
Najanun, selbst wenn du das abfängst - was ist, wenn 1024 Strukturen nicht mehr reichen?
-
;fricky schrieb:
noobLolo schrieb:
nachdem wir ein array genommen haben und keine liste...
sag bloss, hier hat wieder einer mit linked lists angefangen. und wenn ja, lass mich raten, wer's war... *fg*
Die Vermutung liegt nahe ...
-
unsigned short liefertermin[3]; // VERTRAG.DAT // D M Y // 13 00 04 00 5B 00 // -> 19.04.91
Y ist zweistellig!
-
fassungsloser schrieb:
Y ist zweistellig!
Vielleicht kommt der Prof aus der Cobol-Ecke?
-
Vielleicht ist es auch ein Format, wie es noobLolo bereits vermutet hat.
Im Grunde reicht ja eintime_t liefertermin;
aus.
-
Hallo Leute. Hab heut erfahren das ich die Aufgabe bis Donnerstag abzugeben hab. Kann mir bitte jemand sagen wie ich Aufgabe 2 und 3 hinbekomme???
Ich bitte euch Jungs und Mädels.....
Bin am verzweifeln.
-
also ich kenns ja nur so das man immer mehr zeit hat und nicht weniger aber jede schule ist da ja ein bischen anders
also wo waren wir
aja beim sortieren wenn du mir die sortier function sagen kannst mit der du nach dem feld ->vertrnr sortieren kannst bekommst die restlichen umsonst, falls du nicht weißt wie das geht du hast 2 beispiele auf den letzten 1-2 seiten