datenstruktur als bedingung

quaker23

Grünschnabel
hallo!

ich habe in einem simulationsprogramm(konsolenanwendung) einer kleinen datenbank ein datenstruktur wie folgt:
Code:
  struct member
  {
     char name[30];
     char vorname[20];
     char email[60];
     char wohnort[20];
     int beitraege;
     char icq[10];
  
  };

nun habe ich ein array "member user[10]" angelegt und werte innerhalb des programms hineingeschrieben.

jetzt will ich z.B. den durchschnitt der beiträge aller user ausrechnen, wofür ich mir folgende funktion geschrieben habe:
Code:
  int berechne_durchschnitt(member user[])
  {   
      int i=0;
      while(user[i])           // <-  FEHLER! 
      {
         //hier steht code wenn der fehler behoben wurde
        i++
      }
  }

diese soll am ende dann den berechneten durchschnitt an die aufruf-funktion zurückgeben. da ich aber für die berechnung alle beitragsanzahlen brauche will ich in einer schleife das array durchlaufen und die beiträge addieren und später durch i teilen.
jedoch kommt folgende fehlermeldung in der zeile "while(user[i])" :

error C2451: Bedingter Ausdruck des Typs 'member' nicht zulässig
Kein benutzerdefinierter Konvertierungsoperator verfügbar, der diese Konvertierung durchführen kann, oder der Operator kann nicht aufgerufen werden

habe vorher
Code:
for(int i=0;user[i];i++)
probiert aber ging auch nicht.


ich benutze microsoft visual studio 2003 .net



viele dank für eure hilfe!
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

wie wre es wenn du es so versuchst?

Code:
struct member{
        char name[30];
        char vorname[20];
        char email[60];
        char wohnort[20];
        int beitraege;
        char icq[10];
};

int berechne_durchschnitt(member* user, int size){
        for(int i = 0; i < size; i++){
                //hier steht code der den user[i] auswertet
        }
}

int main(){
        const int MAX_MEMBER_SIZE = 10;
        member user[MAX_MEMBER_SIZE];
        berechne_durchschnitt(user, MAX_MEMBER_SIZE);
}

Gruß

RedWing
 
Nein das geht nicht.

Du muesstest dafür den dementsprechenden Operator in deiner struct
überladen um dein Objekt in einer Bedingung verwenden zu koennen,
vorrausgesetzt du arbeitest mit C++.

Gruß

RedWing
 
Zuletzt bearbeitet:
wenn ich es in c++ machen müsste würde ich eine klasse erstellen die dann auch die funktionen zur berechnung beinhalten... aber danke klappt jetzt
 
Auch wenn das Problem gelöst wurde, hier noch mein Senf dazu:
Alte C-Hasen bezeichnen Arrays üblicherweise als Vektoren. Der Grund liegt meines Wissens darin, dass man beim übergeben von Arrays/Vektoren an Funktionen immer zwei Werte übergeben muss: Pointer und Länge, weil es aus dem Array/Vektor keine Möglichkeit gibt - auch nicht mittelbar, wie Du es versuchst - die Anzahl der verwendeten oder gar allokierten Elemente festzustellen.

@quaker23: Übrigens - Du kannst den Thread als erledigt kennzeichnen
 
Der Grund liegt meines Wissens darin, dass man beim übergeben von Arrays/Vektoren an Funktionen immer zwei Werte übergeben muss: Pointer und Länge, weil es aus dem Array/Vektor keine Möglichkeit gibt - auch nicht mittelbar, wie Du es versuchst - die Anzahl der verwendeten oder gar allokierten Elemente festzustellen.

Der Grund für die Bezeichnung als Vektor liegt nicht darin das man 2
Sachen brauch um ein Array anzusprechen (Größe und das Array selber)
sondern vielmehr darin das ein Array mit n Elementen einem Vektor im R^n
ähnlich ist.
Zum Bsp ein Feld mit 3 Elementen entspricht einem Element (Vektor) aus
dem 3 dimensionalen Raum...
Bei den andren Sachen stimm ich dir natürlich zu :)

Gruß

RedWing
 
Zuletzt bearbeitet:
Zurück