C++ und das struct, Problem bei Klausurvorbereitung

Chakky

Member of Honour
//Update ok habs falscher zugriff auf die arrays.... *schäm* zugriff sieht so aus:
studenten.Name

//update ende

Hallo,

bis gerade eben dachte ich ich kann die Grundlagen in C++ aber ich komme mit den struct überhaupt nicht klar bzw in der aufgabe weis ich nicht wie ich richtig drauf zugreifen kann.

hier mal mein code:
Code:
#include<iostream>
using namespace std;

struct person {
char Name[40];
char Vorname[20];
int Matrikelnummer;
int Studiengang;
};

const int STUDENTENZAHL=10000; //sollen global verfügbar sein lt aufgabenstellung
person studenten[STUDENTENZAHL];

int get_stg(int stg) //sucht aus den ganzzahligen studiengang alle daten raus und gibt sie aus
{
    
for (int i=0;i<STUDENTENZAHL;i++) {
if (stg == studenten.Studiengang[i] and studenten.Studiengang[i] != 0 )
{
        cout<<"Name: "<<studenten.Name[i]<<endl;
        cout<<"Vorname: "<<studenten.Vorname[i]<<endl;
        cout<<"Matrikelnummer: "<<studenten.Martrikelnummer[i]<<endl;
        }
}
return 0;

}


int main() {
    int stgn,temp;
    cout<<"Studiengangnumer eingeben:";
    cin>>stgn;
   temp= get_stg(stgn);
    
    


system("PAUSE");
return 0;}

und hier die aufgaben stellung (ich weis die andere funktion fehlt noch aber wenn es schon an der einen funktion scheitert...)

ich habe das struct angepasst gemäß der variabeln defintion weiter unten,
der compiler von dev-c++ wirft mir folgende fehlermeldungen raus

D:\TU\Info\probbenochmal.cpp In function `int get_stg(int)':
18 D:\TU\Info\probbenochmal.cpp request for member `Studiengang' in `studenten', which is of non-class type `person[10000]'
d.h. für mich das er das net finden kann das struct oder? nur wie behebe ich das?


Aufgabenstellung:
Gegeben sei eine Struktur student
struct student {
char Name[40];
char Vorname[20];
int Matrikelnummer;
int Studiengang;
};

Aus dieser Struktur wird ein Feld studenten aufgebaut:

const int STUDENTENZAHL=10000;
person studenten[STUDENTENZAHL];

welches global verf¨ugbar ist. Das Feld sei bereits mitWerten belegt.Wenn weniger
als 10000 Studenten immatrikuliert sind, so ist das Strukturelement Matrikelnummer
des ersten freien Feldelementes mit dem Wert 0 belegt. Entwerfen und
implementieren Sie eine C++-Funktion get stg:

int get_stg(int stg);


in der das Feld studenten sequentiell durchmustert wird. Dabei sollen alle Studenten
(Name, Vorname, Matrikelnummer) auf dem Bildschirm ausgegeben werden,
die den als Parameter stg spezifizierten Studiengang (hier mit einer ganzen
Zahl beschrieben) studieren. Die Zahl der Studenten, die den spezifizierten Studiengang
studieren, soll von der Funktion zur¨uckgegeben werden. Desweiteren
soll eine C++-Funktion get anzahl entworfen und implementiert werden:
int get_anzahl();
die die Gesamtzahl aller immatrikulierten Studenten zur¨uck gibt. Demonstrieren
Sie die Verwendung der Funktionen get anzahl und get stg zur Ermittlung des
prozentualen Anteils der Studentenzahl eines vom Nutzer einzugebenden Studienganges
an der Gesamtzahl aller Studenten.
 
Zuletzt bearbeitet:
Du musst folgendes in Zeile 18 schreiben:
Code:
if (stg == studenten[i].Studiengang && studenten[i].Studiengang != 0 )
Der Grund ist folgender: der Zugriff auf Arrayelemente steht bei dir an dem Integer-Element und nicht am Array selbst:
array[index].element greift auf des Element der Stuct beim Index in array zu; array.element[index] würde bedeuten, dass das Element ein Array ist.
 
Zuletzt bearbeitet:
Du musst folgendes in Zeile 18 schreiben:
Code:
if (stg == studenten[i].Studiengang && studenten[i].Studiengang != 0 )
Der Grund ist folgender: der Zugriff auf Arrayelemente steht bei dir an dem Integer-Element und nicht am Array selbst:
array[index].element greift auf des Element der Stuct beim Index in array zu; array.element[index] würde bedeuten, dass das Element ein Array ist.

jo danke :) hab ich auch dann nach langer suche rausgefunden aber den fehler werde ich bestimmt nicht mehr in der klausur machen :)
 
Zurück
Oben