Jump to content
  • 0
Melde dich an, um diesem Inhalt zu folgen  

C++ - Record Array als Parameter mitgeben

Frage

Hi Leute,

Ich hätte mal eine Frage. Wenn ich ein Recordarray habe, also ein Array aus mehreren Records und z.B. eine Einlesen Methode, womit ich die Daten des Records einlese und eben eine Ausgeben Methode, womit ich die ganzen Daten ausgebe. Wie mache ich nun möglich, dass ich aus main auf die einzelnen Elemente des Recordarrays mittels der Einlesenfunktion zugreife?

Also nehmen wir an, ich habe das Recordarray mit 4 Elementen. In meiner Main rufe ich 2 Methoden auf, einmal "einlesen" und einmal "ausgeben". Wie greife ich mittels main/einlesen auf ein Element des Recordarrays zu bzw. veränder es? Denn ich gebe der Einlesen Methode eine Pointer Variable auf das Recordarray mit.

#include <iostream>
#include <stdio.h>

using namespace std;



struct datum_typ {
    int day;
    int month;
    int year;
};

struct wetterstation_typ
{
   float temperatur;
   int ozon;
   char ort[];

   struct datum_typ datum;
};

void eingabe_station(struct wetterstation_typ * wetterstation) {
    for (int i = 0; i <= 2; i++) {
        int eingabe;
        cout << "Bitte geben Sie an, auf welche Wetterstation Sie zugreifen möchten.";
        cin >> eingabe;
        if (i == eingabe) {
            cout << "****** Wetterstation eingeben: \n";
            cout << "****** Temperatur: \n";
            cin>>(*wetterstation[eingabe]).temperatur;
            cout << "****** Ozon: \n";
            cin>>(*wetterstation[eingabe]).ozon;
            cout << "****** Ort der Wetterstation eingeben: \n";
            cin>>(*wetterstation[eingabe]).ort;
            cout << "****** Datum eingeben: \n";
            cin >> (*wetterstation[eingabe]).datum.day >> (*wetterstation[eingabe]).datum.month >> (*wetterstation[eingabe]).datum.year;
        }
    }
}






int main()
{
struct wetterstation_typ wetterstation[3];
eingabe_station(&wetterstation);
}


Irgendwie mag das bei mir nicht funktionieren.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

2 Antworten auf diese Frage

Empfohlene Beiträge

  • 0

Mehrere Probleme:

Am 10.9.2017 um 16:24 schrieb wisdomsoz:

#include <stdio.h>

Brauchst du nicht.

 

Am 10.9.2017 um 16:24 schrieb wisdomsoz:

char ort[];

Das funktioniert nicht. Arrays passen ihre Größe in C++ nicht magisch an die Erfordernisse an. Benutz std::string statt char-Arrays.

 

Am 10.9.2017 um 16:24 schrieb wisdomsoz:

(*wetterstation[eingabe]).temperatur

Der Dereferenzierungsoperator (Stern) ist hier überflüssig. Der []-Operator führt bereits eine Dereferenzierung durch.

Allgemein bedeutet a[ b] dasselbe wie *(a+b), solange du nicht anfängst, die Operatoren selbst zu überladen.

 

Am 10.9.2017 um 16:24 schrieb wisdomsoz:

void eingabe_station(struct wetterstation_typ * wetterstation) {

Die Angabe von "struct" ist in C++ (im Gegensatz zu C) unnötig.

 

Am 10.9.2017 um 16:24 schrieb wisdomsoz:

eingabe_station(&wetterstation);

Die Funktion eingabe_station erwartet einen Zeiger auf wetterstation_typ, nicht einen Zeiger auf Array von wetterstation_typ.

Grundsätzlich solltest du einen Container der Standardbibliothek (z.B. std::array oder std::vector) benutzen. Dann hast du auch nicht mehr das Problem, dass du in der Funktion nicht weißt, wie groß das Array war.

 

Am 10.9.2017 um 16:24 schrieb wisdomsoz:

for (int i = 0; i <= 2; i++)

Die Schleife ist unnötig. Du probierst hier alle gültigen i durch, ob sie zur Eingabe passen. Denselben Effekt hätte eine einfache if-Anweisung, die prüft, ob die Eingabe gültig ist.

bearbeitet von mfk'); DROP TABLE Users;--

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Gast
Diese Frage beantworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Melde dich an, um diesem Inhalt zu folgen  

Fachinformatiker.de, 2019 SE Internet Services

fidelogo_small.png

if_icon-6-mail-envelope-closed_314900.pnSchicken Sie uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App


Get it on Google Play

Kontakt

Hier werben?
Oder senden Sie eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...

Wichtige Information

Fachinformatiker.de verwendet Cookies. Mehr dazu in unserer Datenschutzerklärung