WinFuture-Forum.de: Probleme Bei Wiederholung Gleicher Vorgänge - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
  • 2 Seiten +
  • 1
  • 2

Probleme Bei Wiederholung Gleicher Vorgänge Wert bleibt gleich


#1 Mitglied ist offline   Fabi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.958
  • Beigetreten: 30. August 04
  • Reputation: 1
  • Geschlecht:Männlich

geschrieben 27. September 2006 - 21:46

hi,

ich hab zur übung ein Programm geschrieben, das sich mastermind nennt, es sollt auch so ähnlich wie das namensgleiche spiel Mastermind funktionieren.
ich habe eine klasse erstellt, die mir immer einen ganzzahligen wert über die funktion random(); zurück liefert.

jetzt habe ich zwei objekte dieser klasse erstellt, nur leider gibt die klasse an beide objekte den gleichen wert zurück!
ich habe hier mal den quellcode gepostet, vielleicht kommt jemand von euch auf den fehler, ich kann das tool im einzelnen leider nicht so gut erklären, da es sehr komplex ist, zumindest von den grafischen funktionen, deshlab solltet ihr es auch mal so anschauen!

hab es in C++ mit dem Borland Builder 5 geschrieben!

bin dankbar für jeden support!

Angehängte Datei(en)

  • Angehängte Datei  Tools.7z (12,62K)
    Anzahl der Downloads: 81

0

Anzeige



#2 Mitglied ist offline   lyrc 

  • Gruppe: Mitglieder
  • Beiträge: 17
  • Beigetreten: 13. August 06
  • Reputation: 0

geschrieben 02. Oktober 2006 - 11:55

sorry.. kann die datei leider nicht entpacken..
aber vlt gehts auch so.

du lässt die beiden zahlen mit random(); generieren und ziehst dann nachher bei der ersten zahl 2 ab und bei der anderen 2 drauf... muss natürlich nich mit 2 gemacht werden^^

hoffe das geht so :wink:
0

#3 Mitglied ist offline   Fabi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.958
  • Beigetreten: 30. August 04
  • Reputation: 1
  • Geschlecht:Männlich

geschrieben 02. Oktober 2006 - 14:52

das heißt ich kann die funktion
random();
nur einmal aufrufen?
0

#4 Mitglied ist offline   Graumagier 

  • Gruppe: aktive Mitglieder
  • Beiträge: 8.811
  • Beigetreten: 01. März 04
  • Reputation: 1
  • Geschlecht:Männlich
  • Wohnort:Graz, Österreich

geschrieben 02. Oktober 2006 - 15:05

Nimm doch rand() und srand()...

Dieser Beitrag wurde von Graumagier bearbeitet: 02. Oktober 2006 - 15:09

"If you make something idiot proof, someone will invent a better idiot." - Marvin

For Emails always use OpenPGP. My KeyID: 0xA1E011A4
0

#5 Mitglied ist offline   Fabi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.958
  • Beigetreten: 30. August 04
  • Reputation: 1
  • Geschlecht:Männlich

geschrieben 03. Oktober 2006 - 20:54

in der klasse die ich geschrieben habe, rufe ich die funktion random(); auf, kann ich die funktion nur einmal sprich nur mit einem objekt der sekbst geschriebenen klasse aufrufen?

hab den code nochmals gepostet, aber ohne *.exe datei und ohne projektdatei, da sonst die upload größe überschritten woren wäre.

Angehängte Datei(en)

  • Angehängte Datei  Tools.zip (19,14K)
    Anzahl der Downloads: 64

0

#6 Mitglied ist offline   Graumagier 

  • Gruppe: aktive Mitglieder
  • Beiträge: 8.811
  • Beigetreten: 01. März 04
  • Reputation: 1
  • Geschlecht:Männlich
  • Wohnort:Graz, Österreich

geschrieben 03. Oktober 2006 - 21:00

Das Problem ist, dass der IV des Zufallszahlengenerators stets der gleiche ist. Bei rand() gibt's eben srand(), mit der man bspw. die derzeitige Sekunde (nach UNIX-Zeit) als IV nehmen kann. Ob's bei random() ein Äquivalent dazu gibt weiß ich nicht.

Dieser Beitrag wurde von Graumagier bearbeitet: 03. Oktober 2006 - 21:03

"If you make something idiot proof, someone will invent a better idiot." - Marvin

For Emails always use OpenPGP. My KeyID: 0xA1E011A4
0

#7 Mitglied ist offline   Fabi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.958
  • Beigetreten: 30. August 04
  • Reputation: 1
  • Geschlecht:Männlich

geschrieben 04. Oktober 2006 - 13:06

das heißt also im klartext, wenn ich es so mache :
 random();
randomize(8)+1;


das in einer klasse mit return wert hinterlege, das dann Objekt1 und Objekt2 der erstellten klasse immer den selben wert zurückgeben beim aufruf der Methode?
0

#8 Mitglied ist offline   Graumagier 

  • Gruppe: aktive Mitglieder
  • Beiträge: 8.811
  • Beigetreten: 01. März 04
  • Reputation: 1
  • Geschlecht:Männlich
  • Wohnort:Graz, Österreich

geschrieben 04. Oktober 2006 - 13:24

Fabi sagte:

das in einer klasse mit return wert hinterlege, das dann Objekt1 und Objekt2 der erstellten klasse immer den selben wert zurückgeben beim aufruf der Methode?

Ja, logischerweise.

randomize() ist AFAIK das gleiche wie srand(time(NULL)), funktioniert also nur mit rand(). Nimm' doch einfach rand().

Dieser Beitrag wurde von Graumagier bearbeitet: 04. Oktober 2006 - 13:25

"If you make something idiot proof, someone will invent a better idiot." - Marvin

For Emails always use OpenPGP. My KeyID: 0xA1E011A4
0

#9 Mitglied ist offline   Fabi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.958
  • Beigetreten: 30. August 04
  • Reputation: 1
  • Geschlecht:Männlich

geschrieben 04. Oktober 2006 - 13:59

@graumagier: könntest du mir mal ein beispiel mit rand() machen?

afaik könnte ich ja auch für jedes objekt eine neue klasse machen, die vom inhalt her genau gleich ist!oder?
0

#10 Mitglied ist offline   Graumagier 

  • Gruppe: aktive Mitglieder
  • Beiträge: 8.811
  • Beigetreten: 01. März 04
  • Reputation: 1
  • Geschlecht:Männlich
  • Wohnort:Graz, Österreich

geschrieben 04. Oktober 2006 - 14:04

Fabi sagte:

könntest du mir mal ein beispiel mit rand() machen?

#include <stdlib.h>
#include <time.h>

int main() {

  srand(time(NULL));

  return rand();
}


Fabi sagte:

afaik könnte ich ja auch für jedes objekt eine neue klasse machen, die vom inhalt her genau gleich ist!oder?

Und jetzt solltest du mal ganz scharf über den Sinn objektorientierter Programmierung nachdenken.

Dieser Beitrag wurde von Graumagier bearbeitet: 04. Oktober 2006 - 14:25

"If you make something idiot proof, someone will invent a better idiot." - Marvin

For Emails always use OpenPGP. My KeyID: 0xA1E011A4
0

#11 Mitglied ist offline   Fabi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.958
  • Beigetreten: 30. August 04
  • Reputation: 1
  • Geschlecht:Männlich

geschrieben 04. Oktober 2006 - 14:10

:D

Zitat

Und jetzt solltest du mal ganz scharf über den Sinn objektorientierter Programmierung nachdenken.
Ich weiß, war nur so ein gedanke....

welche werte würde mir diese Funktion jetzt zurück geben?
wie funktioniert sie jetzt genau?
0

#12 Mitglied ist offline   Graumagier 

  • Gruppe: aktive Mitglieder
  • Beiträge: 8.811
  • Beigetreten: 01. März 04
  • Reputation: 1
  • Geschlecht:Männlich
  • Wohnort:Graz, Österreich

geschrieben 04. Oktober 2006 - 14:11

Fabi sagte:

welche werte würde mir diese Funktion jetzt zurück geben?
wie funktioniert sie jetzt genau?

http://www.cplusplus...tdlib/rand.html
"If you make something idiot proof, someone will invent a better idiot." - Marvin

For Emails always use OpenPGP. My KeyID: 0xA1E011A4
0

#13 Mitglied ist offline   Fabi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.958
  • Beigetreten: 30. August 04
  • Reputation: 1
  • Geschlecht:Männlich

geschrieben 04. Oktober 2006 - 14:15

vielen dank, jetzt hab ichs verstanden! :D :D

werde es heute abend gleich versuchen, und das ergebnis hier posten! :D
0

#14 Mitglied ist offline   Fabi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.958
  • Beigetreten: 30. August 04
  • Reputation: 1
  • Geschlecht:Männlich

geschrieben 04. Oktober 2006 - 17:03

Leider gibt mir die Klasse immernoch die selben werte zurück!

Hier die ausprogrammierte Methode:
#include <vcl.h>
#pragma hdrstop
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#include "CZahlenGenerator.h"

int Zahlengenerator::mZahlenGenerieren()
{
srand ( time(NULL) );
aZahl = rand()%8+1;
return aZahl;
}
//---------------------------------------------------------------------------

#pragma package(smart_init)


wenn ich nun zwei Objekte erzeuge:
 Zahlengenerator Zahl1;
Zahlengenerator Zahl2;


und dann mit beiden Variablen die Methode aufrufe:
Zahl1.mZahlenGenerieren();
Zahl2.mZahlenGenerieren();


haben Zahl1 und Zahl 2 jedesmal den gleichen wert, obwohl ich die Methode mit seperaten Variablen aufrufe!
weiß jemand woran das liegt?
0

#15 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.947
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 04. Oktober 2006 - 17:15

Warum zwei Objekte dieser Klasse (hoffe, ich habe nichts überlesen)?

Was spricht dagegen die Methode zwei mal hintereinander aufzurufen?
0

Thema verteilen:


  • 2 Seiten +
  • 1
  • 2

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0