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?


Anmelden zum Antworten