Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
06.11.2005, 20:09
Deathstar



Hallo Miteinander,

ich habe angefangen von C auf C++ umzusteigen, doch bei mir hakts grad etwas:

Quellcode:#include <cstdlib>
#include <iostream>

using namespace std;

struct datum{
           int tag;
           int monat;
           int jahr;
};  

void getdate(datum *temp){
     cout << "Day: ";
     cin >> temp.tag;
     cout << "Month: ";
     cin >> *temp.monat;
     cout << "Year: ";
     cin >> *temp.jahr;
}
    
void showdate(datum temp){
     cout << temp.tag << "." << temp.monat << "." << temp.jahr << endl;
}


int main(int argc, char *argv[])
{
    datum temp;
    getdate(&temp);
    showdate(temp);
            
    system("PAUSE");
    return EXIT_SUCCESS;
}
Sinn soll sein: Die Werte Tag, Monat und Jahr in der ersten Funktion einzulesen und in der nächsten damit zu arbeiten.

Aber irgendwo ist da noch ein Fehler,
wer weiß da bescheid?

Danke euch.

--

zum Seitenanfang zum Seitenende Profil || Suche
001
06.11.2005, 20:24
HammerBlade



Du hast void getdate(datum *temp) so definiert, dass temp ein Pointer ist, aber du benutzt es nicht so.

Du musst das entwerder auch als Pointer benutzen ...
Quellcode:void getdate(datum *temp)
{
    cout << "Day: ";
    cin  >> temp->tag;
    cout << "Month: ";
    cin  >> temp->monat;
    cout << "Year: ";
    cin  >> temp->jahr;
}
... oder es richtig dereferenzieren ...
Quellcode:void getdate(datum *temp)
{
    cout << "Day: ";
    cin  >> (*temp).tag;
    cout << "Month: ";
    cin  >> (*temp).monat;
    cout << "Year: ";
    cin  >> (*temp).jahr;
}
Die Klammern um das *temp sind wichtig, da der Punkt-Operator eine höhere Präzedenz als der Stern-Operator/Dereferenzierungs-Operator hat.

--

"Mit C++ (noch besser mit C) kann man sich _sehr_ leicht in den Fuss schiessen." - theDon
Auspack und freu! - Auszug aus einer, aus dem japanischen übersetzten, Bedienugsanleitung für ein Spielzeugaquarium.
--
Photon Audio Player | Majestic42.net | How To Ask Questions The Smart Way


Dieser Beitrag wurde am 06.11.2005 um 20:29 von HammerBlade bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
002
06.11.2005, 20:28
KhanRKerensky



Der Fehler steckt wohl in getdate. Du übergibts dort nen pointer. Der Zugriff auf die Elemtente muss damit über -> geschehn.
So:

Zitat:
void getdate(datum *temp){
cout << "Day: ";
cin >> temp->tag;
cout << "Month: ";
cin >> temp->monat;
cout << "Year: ";
cin >> temp->jahr;
}
Statt dem temp->tag könnte man auch (*temp).tag nehmen, dann müssen da aber auch die Klammern hin soweit ich weiß.

/edit
Ach menno. Zu lahm.

--

"[...] you're going to burn in a very special level of Hell. A level they reserve for child molesters and people who talk at the theater." - Book


Dieser Beitrag wurde am 06.11.2005 um 20:28 von KhanRKerensky bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
003
06.11.2005, 20:56
Deathstar



Hey Jungs, besten Dank. Ich bastel dann mal weiter und wenn wieder was ist, poste ich das als Anhang wieder besser.

--

zum Seitenanfang zum Seitenende Profil || Suche
004
06.11.2005, 21:12
CN



und wo genau steckt da jetzt der umstieg von c auf c++? erkenne ich nich ganz
das is ein c programm mit c++ headern, mehr nich

mal ein vorschlag der auch von c++ gebrauch macht:
Quellcode:#include <iostream>
#include <iomanip>

using namespace std;

class datum
{
  int d_, m_, y_;

public:
  datum();
  datum(int, int, int);
  friend ostream &operator <<(ostream &, const datum &);
};

datum::datum()
{
  cout << "day: " << endl;
  cin >> d_;
  cout << "month: " << endl;
  cin >> m_;
  cout << "year: " << endl;
  cin >> y_;
}

datum::datum(int d, int m, int y)
{
  d_ = d;
  m_ = m;
  y_ = y;
}

ostream &operator <<(ostream &out, const datum &d)
{
  out << setw(2) << setfill('0') << d.d_ << "." << setw(2) << setfill('0') << d.m_ << "." << d.y_;
  return out;
}

int main()
{
  datum d;
  cout << d << endl;
}
nur mal so ne anregung was c++ so alles kann, "cout statt printf" is nich alles. is klar dass dus lieber allein machen willst

--


Dieser Beitrag wurde am 06.11.2005 um 21:17 von CN bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche