vergleichsoperator und zufall...
-
hi
hab diesmal gleich 2 fragen:
wenn ich für eine string klasse ("selbstgemacht") einen vergleichsoperator schreiben will/ ihn überladen will, was muss er für einen rückgabetyp haben und was für parameter/agumente muss er entgegen nehmen?
(ich meine den vergleichsoperator ==, der heißt doch so oder.....? wahrscheinlich nicht, aber egal)
ich brauche ihn für sachen wie folgendes:string s1;
cin >> string
if (s1 == "furz")
cout << "ieh, hier stinkt´s" << endl;anstatt von:
string s1;
cin >> string
if (s1.GetString() == "furz")
cout << "ieh, hier stinkt´s" << endl;GetString liefert natürlich den eigentlichen string zurück, der eine element-variable von der string-klasse ist.
und dien zweite frage: wie bringe ich denn "zufall" in mein programm? also ein schlüsselwort um zahlöen zu "randomisieren"
(ich weiß nicht so richtig wie ich das ausdrücken soll, aber ich denke ihr wisst, was ich meine.
in BlitzBasic, die Sprache, die ich vor C++ gelernt habe, hies der Befehl:
Rnd(min, max)
der erste parameter gibt den "startpunkt", der zweite den endpunkt an. d.h. zwischen diesen beiden zahlen liegt am ende die errmittelte zahl. damit diese nicht bei jedem start die gleiche its, musste man die zeile
SeedRnd Millisecs() vor dem ersten benutzen des Rnd befehls verwenden. aber ich schweife mal wieder ab... ;-))ist ein ziemlich langer beitrag geworen, hoffe, mir kann trotzdem jemand helfen. ich habs in meinem letzten thread schon gesagt, bin noch anfänger, also bitte eine "verständliche" sprache sprechen
-
zu 1:
sieht die funktion so aus (oder ähnlich):
const char *string::GetString ()
also gibt einen zeiger auf einen C-String zurück? wenn ja, dann vergleichst du mit dem operator == nur die adressen der zeiger, nicht deren inhalt. inhalt würde mit strcmp gehen. kannst ja mal die suchfunktion dazu benutzen.
ein üblicher vergleichsoperator sieht so aus:#include <cstring> class string { //btw der name ist schlecht gewählt, weil es schon eine klasse //namens string gibt, diese befindet sich aber im namensbereich std (namespace std) //- pack deine klasse am besten in einen eigenen namespace, wenn du nicht weißt, //wie das geht, warte, bis du es in deinem lieblingsbuch lernst oder such im internet danach ... const char *GetCString () const; friend bool operator == (const string &s1, const string &s2) { return !std::strcmp(s1.GetCString(), s2.GetCString()); }
zu 2.: es gibt die funktion rand aus dem header cstdlib. der funktion SeedRand entspricht srand. benutze einfach unsere suchfunktion, das thema zufallszahlen hatten wir schon relativ oft! C++ Forum durchsuchen (falls du den roten link rechts oben zwischen "Registrieren" und "Hilfe" nicht findest ;))
mit startpunkt und endpunkt musst du etwas tricksen, du wirst schon finden, wie's geht![ Dieser Beitrag wurde am 24.05.2003 um 13:15 Uhr von davie editiert. ]
-
In den FAQ steht auch was zu Zufallszahlen
.
-
#include<iostream> #include<ctime> #include<cstdlib> using namespace std; main() { int zufall; int hoechstwert=100; int mindestwert=10; srand(time(0)); // time(0) liefert verstrichene Sekunden seit 1.1.1970 0.00 uhr zurück zufall=rand()%(hoechstwert-mindestwert+1)+mindestwert; cout<<"Zufallszahl: "<<zufall; cin.get(); }
[ Dieser Beitrag wurde am 26.05.2003 um 10:40 Uhr von Spieleprogrammierer editiert. ]
[ Dieser Beitrag wurde am 26.05.2003 um 10:41 Uhr von Spieleprogrammierer editiert. ]