Verwendung von Struct oder Übergabe
-
Ich weiss nicht wirklich wie ich auf das Feld zugreifen kann, so daß mit dem Alter den Mittelwert berechnet wird. Kann mir da eventuell einer helfen?
Danke
#include <conio> #include <iostream> using namespace std; double mittelwertsberechnung( int [] ); struct person { char name[20]; int alter; } int main() { person schulklasse[3]={{"Heinz",23"},{"Hans",22},{"Tim",14}}; mittelwertsberechnung(schulklasse); getch(); return 0; } double mittelwertsberechnung( int schulklasse[] ) { double mittelwert; for(int i=0;i<3;i++) { mittelwert+=schulklasse[i].alter; } mittelwert=mittelwert/3; return mittelwert; }
-
Mit
int mittelwert=mittelwertsberechnung(schulklasse);
-
Was machst du das eigentlich so umständlich?
//header.h #include <string> #include <vector> class Person { private: std::string Name; int Alter; public: Person(std::string name, int alter) std::string GetName(); int GetAge(); }; class Schulklasse { private: std::vector<Person> Schüler; int Anzahl; public: int GetAnzahl(); Person& operator[](int index) void NeuerSchueler(Person& p); }; //cpp #include "header.h" using namespace std; Person::Person(string name, int alter) :Name=name, Alter=alter { }; inline string Person::GetName() { return Name; } inline int Person::GetAge() { return Alter; } inline int Schulklasse::GetAnzahl() { return Anzahl; }; Person & Schulklasse::operator[](int index) //Kann man das auch inline machen? { return Schüler[index]; }; inline void Schulklasse::NeuerSchueler (Person& p) { Schüler.push_back(p); }; double Mittelwert(Schulklasse s) { int anz=s.GetAnzahl(); int gesamt=0; for(int i=0;i<=anz;++i) gesamt+=s[i].GetAge(); return gesamt/anz; };
Achja: keine Garantie das das fehlerfrei ist, nur mal eben so zusammengeschludert!
-
OK, ich sehe gerade, dein code ist ziemlich vermurkst! So wies aussieht bist du ein anfänger? Dann beachte minen vorherigen post nicht! Ich gehe das mal Fehler für Fehler durch und versuche dich zu berichtigen!
#include <iostream> //Wozu? Wenn schon, dann auch was ausgeben! #include <string> //Brauchen wir noch #include <vector> //dito using namespace std; //double mittelwertsberechnung( int [] ); //Wenn, müsstest du einige Persohnen erwarten! //Aber dann musst du noch die Größe der Klasse verlangen, an die kommst du nicht ran! //double mittelwertsberechnung (Person[], int) //So ungefähr double mittelwertsberechnung (vector<Person>) //ein Vektor ist sowas wie ein erweitertes C-Array! (Funktionalität folgt!) //Das in den spitzen Klammern gibt an, was der Vektor für Lemente enthält. struct person { string name[20]; //ein String ist ein erweitertes C-Array, das für Zeichenketten optimiert wurde! int alter; } int main() { vector<Person> Klasse={{"Heinz",23"},{"Hans",22},{"Tim",14}}; //Ich bin mir nicht sicher, ob man einen Vector so benutzen Kann! //Müsste man aber, da sich Vektoren per Konvention so verhalten müssen wie Arrays! double mittelwert=mittelwertsberechnung(Klasse); //getch(); //Nicht gut, alt! cin.get(); //Das selbe (ungefähr, dafür ist iostream gut) return 0; //Könnte man bei einem modernen kompiler weglassen } double mittelwertsberechnung(vector<Person> Schulklasse) { //double mittelwert; //Nicht benutzen (siehe drunter) int Gesamtalter //int ist normalerweise Kleiner int anzahl=Schulklasse.size() //Gibt die Größe zurück (wer hätte das gedacht) for(int i=0;i<=size;i++) { mittelwert+=schulklasse[i].alter; } return Gesamtalter/anzahl }