Programmierungsproblem
-
#include <stdio.h> #include <stdlib.h> #include <string.h> #define FELD_LAENGE 7 typedef struct{ short sErzielt; short sHingenommen; } TTorverhaeltnis; typedef struct { short sRoteKarten; short sGelbekarten; } TFairplay; typedef struct{ char*cpTeamName; short sPunkte; TTorverhaeltnis sctTorverhaeltnis; TFairplay sctFairplay; } TTeam; //Vergleichsfkt. RICHTIG ist meine Version nicht!! Der Mist hierbei ist für mich der Zugriff auf Struktur mit Struktur und der Vergleich von Strings durch strcmp int compareTeam(const void *, const void *); int compareTeam(const void *a, const void *b){ Strichpunkt nach int fehlt long e1, e2; //?? TTeam *z1, *z2; //?? z1=(TTeam *)a; //?? z2=(TTeam *)b; //?? //Vergleich der Punktzahlen e1=z1->sPunkte; e2=z2->sPunkte; if (e1<e2) return -1; if (e1>e2) return 1; //Verglecih der Tordifferenz e1=(z1->TTorverhaeltnis->sErzielt)-(z1->TTorverhaeltnis->sHingenommen); //hier läufts dann schief e2=(z2->TTorverhaeltnis->sErzielt)-(z2->TTorverhaeltnis->sHingenommen); //hier läufts dann schief if (e1<e2) return -1; if (e1>e2) return 1; //Vergleich der erzielten Tore e1=(z1->TTorverhaeltnis->sErzielt); //hier läufts dann schief e2=(z2->TTorverhaeltnis->sErzielt); //hier läufts dann schief if (e1<e2) return -1; if (e1>e2) return 1; //Vergleich der Karten //red*3+yellow ; klein ist gut e1=(z1->TFairplay->sRoteKarten)*3-(z1->TFairplay->sGelbeKarten); //hier läufts dann schief e2=(z2->TFairplay->sRoteKarten)*3-(z2->TFairplay->sGelbeKarten); //hier läufts dann schief if (e1<e2) return 1; if (e1>e2) return -1; //Mannschaftsname e1=z1->cpTeamName; //hier läufts dann schief e2=z2->cpTeamName; //hier läufts dann schief strcmp(e1, e2){ //hier läufts dann schief if (e1<e2) return -1; if (e1>e2) return 1; if (e1=e2) return 0; } //------------------------------------------------------------------------ int main(void){ TTeam sctTeamFeld[]=( {"Plaste Zwickau", 11, {18,66}, {4,15}}, //Sind ja nur Bsp. grins {"Bayern Muenchen", 50, {51,17}, {1,10}}, {"1.F.C. Nuernberg", 43, {45,26}, {5,11}}, {"Lada Leipzig", 11, {18,66}, {5,12}}, {"Schweinfurt 05", 43, {44,21}, {7,19}}, {"Schalke 04", 43, {40,17}, {2,17}, {"Turbine Dresden", 11, {18,66}, {3,10}}), qsort(sctTeamFeld, FELD-LAENGE, sizeof(TTeam), compareTeam); for (int i=0; i<FELD_LAENGE; i++) printf //hier will ich die Liste ausgeben mit <Name><Punkte><Tore ERZIELT:HINGENOMMEN><Rote Karten/Gelbe Karten> return 0; }
Kann mir irgendjemand helfen
-
Wenn du dein Problem vernünftig schilderst, bestimmt!
-
..Also
Bei meiner Vergleichsfkt haperts. Ich krieg das einfach nicht hin, die Zeiger auf Strukuren, die wiederum auf Zeiger verweisen. Dazu kommt noch das blöde strcmp, wobei ich das einfach mit
return strcmp(Zeiger 1, Zeiger 2) löse.Aber danke für die schnelle Antwort
-
torveraheltnis.irgendwas
du kennst den unterschied zwischen "->" und "." fuer die elemente einer struktur?