Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
14.07.2001, 10:17
H_B2000



Also ich hab mir jetzt auch mal C++ zu gemüte gezogen !!!
Kurz vom GPSK Visual 6.0 installiert und mit den Tuts angefangen !!!
So jetzt sind aber Tuts mehr da (aufjedenfall nicht auf http://coding.thewall.de) da dachte ich mir probierste mal was eigenes !!!

So dann hab ich ein bisschen nachgedacht und bin auf die Idee gekommen
das ich doch ein Spiel names "Zahlenraten" machen könnte !!! Der Name verrät alles !!! So jetzt zu meinem Problem !!! Wie legt man ne Zufallszahl fest ??? Also ich stelle mir das so vor aber es klappt nicht !!!

#include "iostream.h"
#include "stdio.h"

int Zufall;

Zufall == random (1000)+1;

So anscheinend ist aber der Befehl random falsch ich habe aber gehört das er zum erstellen eines Zufallswertes benutzt wird bei mir steht dann

random ist kein deklarieter dingsbums oder so !!!

Muss ich da vieleicht irgendwas mit #include "iostream.h" oder so machen also das es so aussieht :

#include "iostream.h"
#include "stdio.h"
#include "Datei mit random Befehl.h"

int Zufall

Zufall == random (1000)+1

Helft mir !!! Please !!!
Danke schonmal im Voraus !!!

--

H_B Projektleiter des Future-Wars MODs

Er : Was zur Hölle wollen Sie ???
Ich : Na was wohl du mieser alter Penner ich will eine verdammte Scheiß Antwort

FUTURE WARS

zum Seitenanfang zum Seitenende Profil || Suche
001
14.07.2001, 11:36
Sccar



moinsen

ganz einfach. mach einfach (rand() % 1000) + 1. % bedeutet modulo (rest).

sccar

--

...das is zwar der uebelst gehackteste kleine bastard, den ich je gesehen habe, aber dafuer sauschnell. {Tron}

zum Seitenanfang zum Seitenende Profil || Suche
002
14.07.2001, 11:54
TheVoice



also, zuerst einmal musst du stdlib.h einbinden, also so:

#include "stdlib.h"

dann heißt die Funktion nicht random() sondern rand()
Zudem benutzt du zur Zuweisung fälscherlicherweise den
Vergleichsoperator == und das heißt, dass in Zufall immer nur
ein Wert von Wahr oder Falsch stehen würde. Das willst du
sicher nicht, du möchtest ja, dass und Zufall eine Zahl von
1 - 1000 steht.

Hier einfach ein Beispielprogramm:

Quellcode:
#include <stdlib.h>
#include <iostream.h>
#include <time.h>

void main( void )
{
   int i;

   // Setze den Startwert des Generators jedes mal auf einen
   // anderen Wert, ansonsten haben wir bei jedem Programmstart
   // die selben Zufallszahlen
   srand( (unsigned)time( NULL ) );  

   for( i = 0;   i < 10;i++ )
       cout << rand() << endl; // Generiere 10 Zufallszahlen
}

Das Problem ist jetzt nur noch, dass die Zufallszahlen so groß werden
können, wie ein Integervalue maximal sein kann.
Leider können wir der Funktion rand() keinen wert übergeben,
da diese keine Parameter akzeptiert und da ich keine andere
Funktion gefunden habe, müssen wir uns abhilfe schaffen:

Für dein Zahlenraten Programm vielleicht folgendes:

Quellcode:
#include <stdlib.h>
#include <iostream.h>
#include <time.h>

int random( int minimum, int maximum )  // So macht man Funktionen ;)
{
int i, tmp;

// Es könnte ja sein, dass sich der Programmierer bei den
// Parametern vertan hat. Also vertausche ich in diesem
// Fall den Inhalt der beiden Variablen über den
// sogenannten Dreiecksaustausch
if ( minimum > maximum )
{
tmp = minimum; // Dreiecksaustausch Schritt 1
minimum = maximum; // Dreiecksaustausch Schritt 2
maximum = tmp; // Dreiecksaustausch Schritt 3
}

   // Setze den Startwert des Generators jedes mal auf einen
   // anderen Wert, ansonsten haben wir bei jedem Programmstart
   // die selben Zufallszahlen
srand( (unsigned)time( NULL ) );  

// Starte eine Endlosschleife (ein Kapitel zu Schleifen
// folgt in ein paar Tagen!)
for (true; true; true)
{
i = rand();
if ( i <= maximum && i >= minimum )
// Wenn der Wert in i passt, also < oder =
// maximumwert ist und größer als der minimumwert ist
// dann springe ich mit break aus der Endlosschleife
// hinaus.
break;
}
// Am Ende dieser Funktion übergebe ich mit return i
// den Rückgabewert der Funktion.
return i;
}

void main( void )
{
   int zufall;

   // Übergeben wird der Funktion random() wie es die Parameterliste
   // (siehe oben) beschreibt, ein wert, der die kleinste Zahl angibt
   // die uns der Zufallsgenerator liefern soll und ein Wert, der
   // die größte Zahl angibt, die der Zufallsgenerator liefern soll.
   zufall = random( 1, 1000 );
}

Viel Spaß beim coden ;) Und wenn du noch weitere Fragen hast,
dann schreib sie ruhig hier rein.

C ya!

Kleine Anmerkung wegen der Funktion:
du siehst hier die Befehlszeile zufall = random( 1, 1000 );
Jetzt magst du dich vielleicht fragen, wie man einem
Wert einfach eine Funktion zuweisen kann.
Aber gerade das ist das schöne an den Funktionen...
sie wird dem Wert nicht zugewiesen, nein sie wird an
dieser Stelle aufgerufen und der Wert, der in der Funktion
am return landet (in diesem Fall die Variable i), dieser
Wert wird dann schließlich an unsere variable (zufall) in der
main Funktion übergeben.

Edit.....
ähm, warum sind die ganzen schönen Zeileneinschübe
verloren gegangen ?! Naja, der Code ist trotzdem lesbar.

--

Against TCPA | Resourcecode.de | Blender 3D | [ Darkzone | Pandorra | Alpine ]


Dieser Beitrag wurde am 14.07.2001 um 11:55 von TheVoice bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
003
14.07.2001, 12:17
TheVoice



Har, ... mist :) Gut Sccar!

Mit dem Modulo-Operator ist das sogar eine noch bessere Variante!
Das erspart dir die Funktion, und die If-Klammern.... usw...

Cool.

--

Against TCPA | Resourcecode.de | Blender 3D | [ Darkzone | Pandorra | Alpine ]

zum Seitenanfang zum Seitenende Profil || Suche