Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » tabelle

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
20.05.2005, 20:50 Uhr
~redi
Gast


Hallo Leute habe ein kleinens Problem.
Beim bubblesort schreibt er mir so komische 8 Fehler und zwar:


Code:
error C2109: Index benoetigt ein Feld oder einen Zeigertyp
error C2109: Index benoetigt ein Feld oder einen Zeigertyp
error C2109: Index benoetigt ein Feld oder einen Zeigertyp
error C2109: Index benoetigt ein Feld oder einen Zeigertyp
error C2109: Index benoetigt ein Feld oder einen Zeigertyp
error C2106: '=' : Linker Operand muss ein L-Wert sein
error C2109: Index benoetigt ein Feld oder einen Zeigertyp
error C2106: '=' : Linker Operand muss ein L-Wert seiner


Seht euch das mal an hier mein quelltext:

C++:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

typedef struct {
    char name_team[50];
    int gewonnen_spiele;
    int verloren_spiele;
    int unentschieden_spiele;
    int gesamtpointer_spiele;
    int geschossen;
    int bekommen;
    int tordiff;
} mannschaft;

int anz_teams(int anzahl);
int teams(mannschaft *team);
void bubblesort(mannschaft *team, int anzahl);

int main(int argc, char *argv[]){
    mannschaft team[20];
    int size=0, i=0;

    if(argc!=1){
        fprintf(stderr,"Fehler.\n");
    }

    size=anz_teams(size);

    for(i=0;i<size;i++){
        teams(&team[i]);
    }

    bubblesort(team, size);

    return 0;
}

int anz_teams(int anzahl){

    char *eptr=NULL;
    char hilf[20];

    printf("Anzahl der Mannschaften: ");
    gets(hilf);
    anzahl=strtol(hilf,&eptr,10);
    if((eptr==hilf)||(*eptr!='\0')){
        fprintf(stderr,"Fehler.\n");
    }

    return anzahl;
}

int teams(mannschaft *team){
    char *eptr=NULL;
    char hilf[20];
    int i=0;
    
    printf("\n\nTeamname: ");
    fflush(stdin);
    gets(team->name_team);

    printf("\nWin: ");
    gets(hilf);
    team->gewonnen_spiele=strtol(hilf,&eptr,10);
    if((eptr==hilf)||(*eptr!='\0')){
        fprintf(stderr,"Fehler.\n");
    }

    team->gewonnen_spiele=team->gewonnen_spiele*3;

    printf("\nDrawn: ");
    gets(hilf);
    team->unentschieden_spiele=strtol(hilf,&eptr,10);
    if((eptr==hilf)||(*eptr!='\0')){
        fprintf(stderr,"Fehler.\n");
    }

    team->unentschieden_spiele=team->unentschieden_spiele*1;

    printf("\nLose: ");
    gets(hilf);
    team->verloren_spiele=strtol(hilf,&eptr,10);
    if((eptr==hilf)||(*eptr!='\0')){
        fprintf(stderr,"Fehler.\n");
    }

    team->verloren_spiele=team->verloren_spiele*0;

    printf("\nScore goals: ");
    gets(hilf);
    team->geschossen=strtol(hilf,&eptr,10);
    if((eptr==hilf)||(*eptr!='\0')){
        fprintf(stderr,"Fehler.\n");
    }

    printf("\nGet goals: ");
    gets(hilf);
    team->bekommen=strtol(hilf,&eptr,10);
    if((eptr==hilf)||(*eptr!='\0')){
        fprintf(stderr,"Fehler.\n");
    }

    team->gesamtpointer_spiele=team->gewonnen_spiele+team->unentschieden_spiele+team->verloren_spiele;

    printf("\nGesamtpunkte: %d", team->gesamtpointer_spiele);

    return 0;
}

void bubblesort(mannschaft *team, int anzahl){
    int i=0,j=0,hilf=0;
    
    for (i=0;i<anzahl-1;i++){
        for (j=0;j<anzahl-1-i;j++){
            if (team->gesamtpointer_spiele[j]>team->gesamtpointer_spiele[j+1]){
                hilf=team->gesamtpointer_spiele[j];
                team->gesamtpointer_spiele[j]=team->gesamtpointer_spiele[j+1];
                team->gesamtpointer_spiele[j+1]=hilf;
            }
        }
    }

    printf("%d", team->gesamtpointer_spiele);
}



Mfg.redi


Bearbeitung von 0xdeadbeef:

tags eingefügt, nächstes mal selbst machen.


Dieser Post wurde am 20.05.2005 um 21:22 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.05.2005, 21:25 Uhr
0xdeadbeef
Gott
(Operator)


1. Tags benutzen
2. Viele Leerzeilen machen den Code unlesbar
3. Wenn du Fehler hast, solltest du auch angeben, wo sie auftreten.
4. conio.h brauchst du in dem Code nicht, der Header macht den Code nur unportabel.

Das vorweggeschickt, ich habs mal durch den gcc gejagt. Die Fehler sind hier:

C++:
void bubblesort(mannschaft *team, int anzahl){
    int i=0,j=0,hilf=0;
    
    for (i=0;i<anzahl-1;i++){
        for (j=0;j<anzahl-1-i;j++){
            if (team->gesamtpointer_spiele[j]>team->gesamtpointer_spiele[j+1]){ // <-- hier
                hilf=team->gesamtpointer_spiele[j]; // <-- hier
                team->gesamtpointer_spiele[j]=team->gesamtpointer_spiele[j+1]; // <-- hier
                team->gesamtpointer_spiele[j+1]=hilf; // <-- und hier
            }
        }
    }

    printf("%d", team->gesamtpointer_spiele);
}


Das Problem ist, dass du vorher

C++:
typedef struct {
    char name_team[50];
    int gewonnen_spiele;
    int verloren_spiele;
    int unentschieden_spiele;
    int gesamtpointer_spiele; // <-- hier gesamtpointer_spiele als int deklariert hast, nicht als int-Feld
    int geschossen;
    int bekommen;
    int tordiff;
} mannschaft;


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.05.2005, 22:08 Uhr
~redi
Gast


Könntest du mir vielleicht bitte einen quelltext der richtig íst geben.
Danke bei mir geht es noch immer nicht schaus dir an:

C++:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

typedef struct {
    char name_team[50];
    int gewonnen_spiele;
    int verloren_spiele;
    int unentschieden_spiele;
    int gesamtpointer_spiele[100];
    int geschossen;
    int bekommen;
    int tordiff;
} mannschaft;

int anz_teams(int anzahl);
int teams(mannschaft *team);
void bubblesort(mannschaft *team, int anzahl);

int main(int argc, char *argv[]){
    mannschaft team[20];
    int size=0, i=0;

    if(argc!=1){
        fprintf(stderr,"Fehler.\n");
    }

    size=anz_teams(size);

    for(i=0;i<size;i++){
        teams(&team[i]);
    }

    bubblesort(team, size);

    return 0;
}

int anz_teams(int anzahl){
    char *eptr=NULL;
    char hilf[20];

    printf("Anzahl der Mannschaften: ");
    gets(hilf);
    anzahl=strtol(hilf,&eptr,10);
    if((eptr==hilf)||(*eptr!='\0')){
        fprintf(stderr,"Fehler.\n");
    }

    return anzahl;
}

int teams(mannschaft *team){

    char *eptr=NULL;
    char hilf[20];
    int i=0;
    
    printf("\n\nTeamname: ");
    fflush(stdin);
    gets(team->name_team);

    printf("\nWin: ");
    gets(hilf);
    team->gewonnen_spiele=strtol(hilf,&eptr,10);
    if((eptr==hilf)||(*eptr!='\0')){
        fprintf(stderr,"Fehler.\n");
    }

    team->gewonnen_spiele=team->gewonnen_spiele*3;

    printf("\nDrawn: ");
    gets(hilf);
    team->unentschieden_spiele=strtol(hilf,&eptr,10);
    if((eptr==hilf)||(*eptr!='\0')){
        fprintf(stderr,"Fehler.\n");
    }

    team->unentschieden_spiele=team->unentschieden_spiele*1;

    printf("\nLose: ");
    gets(hilf);
    team->verloren_spiele=strtol(hilf,&eptr,10);
    if((eptr==hilf)||(*eptr!='\0')){
        fprintf(stderr,"Fehler.\n");
    }

    team->verloren_spiele=team->verloren_spiele*0;

    printf("\nScore goals: ");
    gets(hilf);
    team->geschossen=strtol(hilf,&eptr,10);
    if((eptr==hilf)||(*eptr!='\0')){
        fprintf(stderr,"Fehler.\n");
    }

    printf("\nGet goals: ");
    gets(hilf);
    team->bekommen=strtol(hilf,&eptr,10);
    if((eptr==hilf)||(*eptr!='\0')){
        fprintf(stderr,"Fehler.\n");
    }

    return 0;
}

void bubblesort(mannschaft *team, int anzahl){
    int i=0,j=0,hilf=0;
    
    for (i=0;i<anzahl-1;i++){
        for (j=0;j<anzahl-1-i;j++){
            if (team->gesamtpointer_spiele[j]>team->gesamtpointer_spiele[j+1]){
                hilf=team->gesamtpointer_spiele[j];
                team->gesamtpointer_spiele[j]=team->gesamtpointer_spiele[j+1];
                team->gesamtpointer_spiele[j+1]=hilf;
            }
        }
    }

    printf("%d", team->gesamtpointer_spiele);
}



Mfg.redi

Bearbeitung von 0xdeadbeef:

Tags eingefügt. SCHON WIEDER.


Dieser Post wurde am 20.05.2005 um 22:32 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
20.05.2005, 22:34 Uhr
0xdeadbeef
Gott
(Operator)


Was hab ich über Tags und überflüssige newlines gesagt? Ich erzähl das nicht zum Spaß, weißt du?

Ansonsten, ne Fehlerbeschreibung wär schon hübsch, sowas wie "das funktioniert irgendwie nicht" reicht nicht. Und was den Rest angeht, bei entsprechender Bezahlung können wir gern darüber reden, dass ich dir die Arbeit abnehme. Ansonsten gibts Hilfestellung, aber keine Komplettlösung. Sag mir, was wie schiefgeht, und ich geb dir nen Tipp worans liegen könnte.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 20.05.2005 um 22:34 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
21.05.2005, 09:07 Uhr
Tommix



@redi:
Compilieren tut es bei mir, es läuft auch durch. Wenn Du Code postest, schreib davor [cpp] und dahinter [/cpp], dann wird es schöner formatiert.

@beefy:
Der Halbsatz "Tags benutzen" wird möglicherweise nicht von jedem Durchschnittssterblichen verstanden. Carpe diem - (be)nutze den Tag ???

Gruß, Tommix

Dieser Post wurde am 21.05.2005 um 09:08 Uhr von Tommix editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
21.05.2005, 12:07 Uhr
~redi
Gast


er gibt bei mir keine Fehlermeldung aus:

zb: Name: ManU
Win: 4
Drawn: 1
Lose:0

Gesamtpunkte: 12023-> das ist das Problem er rechnet mirs nicht richtig zusammen


C++:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

typedef struct {

    char name_team[50];
    int gewonnen_spiele;
    int verloren_spiele;
    int unentschieden_spiele;
    int gesamtpointer_spiele[100];
    int geschossen;
    int bekommen;
    int tordiff;

}mannschaft;



int anz_teams(int anzahl);
int teams(mannschaft *team);
void bubblesort(mannschaft *team, int anzahl);



int main(int argc, char *argv[]){

    mannschaft team[20];
    int size=0, i=0;
    
    

    if(argc!=1){

        fprintf(stderr,"Fehler.\n");

    }

    size=anz_teams(size);

    

    for(i=0;i<size;i++){
        
        
        teams(&team[i]);
        

    }
    

    bubblesort(team, size);

    return 0;

}

int anz_teams(int anzahl){

    char *eptr=NULL;
    char hilf[20];

    printf("Anzahl der Mannschaften: ");
    gets(hilf);
    anzahl=strtol(hilf,&eptr,10);
    if((eptr==hilf)||(*eptr!='\0')){
        fprintf(stderr,"Fehler.\n");
    }

    return anzahl;

}

int teams(mannschaft *team){

    char *eptr=NULL;
    char hilf[20];
    int i=0;
    
    printf("\n\nTeamname: ");
    fflush(stdin);
    gets(team->name_team);

    printf("\nWin: ");
    gets(hilf);
    team->gewonnen_spiele=strtol(hilf,&eptr,10);
    if((eptr==hilf)||(*eptr!='\0')){
        fprintf(stderr,"Fehler.\n");
    }

    team->gewonnen_spiele=team->gewonnen_spiele*3;

    printf("\nDrawn: ");
    gets(hilf);
    team->unentschieden_spiele=strtol(hilf,&eptr,10);
    if((eptr==hilf)||(*eptr!='\0')){
        fprintf(stderr,"Fehler.\n");
    }

    team->unentschieden_spiele=team->unentschieden_spiele*1;

    printf("\nLose: ");
    gets(hilf);
    team->verloren_spiele=strtol(hilf,&eptr,10);
    if((eptr==hilf)||(*eptr!='\0')){
        fprintf(stderr,"Fehler.\n");
    }

    team->verloren_spiele=team->verloren_spiele*0;

    printf("\nScore goals: ");
    gets(hilf);
    team->geschossen=strtol(hilf,&eptr,10);
    if((eptr==hilf)||(*eptr!='\0')){
        fprintf(stderr,"Fehler.\n");
    }

    printf("\nGet goals: ");
    gets(hilf);
    team->bekommen=strtol(hilf,&eptr,10);
    if((eptr==hilf)||(*eptr!='\0')){
        fprintf(stderr,"Fehler.\n");
    }
    team->gesamtpointer_spiele[]=team->unentschieden_spiele+team->gewonnen_spiele+team->verloren_spiele;

    

    

    




    

    return 0;

}

void bubblesort(mannschaft *team, int anzahl){
    int i=0,j=0,hilf=0;
    
    for (i=0;i<anzahl-1;i++){
        for (j=0;j<anzahl-1-i;j++){
            if (team->gesamtpointer_spiele[j]>team->gesamtpointer_spiele[j+1]){
                hilf=team->gesamtpointer_spiele[j];
                team->gesamtpointer_spiele[j]=team->gesamtpointer_spiele[j+1];
                team->gesamtpointer_spiele[j+1]=hilf;
            }
        }
    }

    printf("%d", team->gesamtpointer_spiele);


}




Mfg.redi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
22.05.2005, 09:10 Uhr
Tommix



'Morgen.

C++:
  printf("%d", team->gesamtpointer_spiele);


Du läßt Dir einen Zeiger ausgeben:

C++:
int gesamtpointer_spiele[100];


Darüberhinaus willst du wahrscheinlich die Mannschaften nach Punkten sortieren, also eher

C++:
if (team[i].gesamtpointer_spiele > team[i-1] // .. usf.


gesamtpointer_spiele braucht dann auch kein Array zu sein. Durchdenke die Sortierroutine noch mal genau.

Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
22.05.2005, 13:27 Uhr
~redi
Gast


Hi hab noch ne frage:




C++:
void bubblesort(mannschaft *team, int anzahl){
    int i=0,j=0,hilf=0;
    
    for (i=0;i<anzahl-1;i++){
        for (j=0;j<anzahl-1-i;j++){
            if (team[j].gesamtpointer_spiele>team[j+1].gesamtpointer_spiele){
                hilf=team[j].gesamtpointer_spiele;
                team[j].gesamtpointer_spiele=team[j+1].gesamtpointer_spiele;
                team[j+1].gesamtpointer_spiele=hilf;
            }
        }

        printf("%d", team[j].gesamtpointer_spiele);---> wie soll ich die------------->gesamtpunkte hier ausgeben

        
    }
}



Mfg.redi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
22.05.2005, 17:02 Uhr
Tommix



Gar nicht, würde ich sagen. Du bist da mitten in der Sortiererei. Mach doch

C++:
void Ausgabe(mannschaft team[], int anzahl)
{
    int i;

    for (i = 0; i < anzahl; ++i)
        printf("Punkte von Team %s: %d\n", team[i].name_team, team[i].gesamtpointer_spiele);
}



- Tommix

Dieser Post wurde am 22.05.2005 um 17:04 Uhr von Tommix editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: