AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Rechen-"Spiel"

Ein Thema von diavy · begonnen am 1. Jul 2012 · letzter Beitrag vom 1. Jul 2012
Antwort Antwort
diavy

Registriert seit: 11. Apr 2012
54 Beiträge
 
#1

Rechen-"Spiel"

  Alt 1. Jul 2012, 17:58
Hallo zusammen.

Ich hab mir neulich gedacht, ich könnt zur Übung mal versuchen ein ganz simples Konsole-Rechenspiel zu schreiben. Klappt soweit auch alles, nur hab ich das Problem, dass zufällig generierte Divisionen nicht klappen. Dass die Divisionen auch aufgehen habe ich ne while-Schleife eingebaut (while a mod b <>0 do b:=-200+random(401)). Manchmal funktionniert es jedoch nicht.

In verschiedenen Fällen bekomm ich eine Fehlermeldung dass ein integer durch 0 geteilt wurde obwohl ich in der genannten Schleife "or (b=0)" eingebaut habe.

In anderen Fällen kommt was in die Konsole stehen was ich nicht mehr lesen kann und die Konsole schließt sich sofort.

Ich kann echt keinen Fehler finden, von daher wäre ich froh wenn mir jemand helfen könnte.

Hier der Code (nur die Prozedur die sich um das Ausrechnen der Division kümmert):

Delphi-Quellcode:
procedure division(var i:boolean);
var a,b,res:integer;
begin
a:=-200+random(401);
b:=-200+random(401);
while (((a mod b)<>0) or (b=1) or (b=-1) or (b=a) or (b=0)) do
        b:=-200+random(401);
write(a,' / ',b,' = ');readln(res);
if res=(a div b) then i:=true
else i:=false;
end;
P.S.: Der boolean-Wert soll dazu dienen um die Anzahl an richtigen Antworten zu zählen.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

AW: Rechen-"Spiel"

  Alt 1. Jul 2012, 18:32
Also erstmal wird die Bedingungs standardmäßig "von links nach rechts" bearbeitet.
Konkret wird also erst versucht zu teilen, und danach geprüft ob b=1 usw. Die Überprüfung
auf b=0 müsste also an den Anfang um den Fehler zu verhindern.

Zum Konzept: Meinst du nicht, es ist einfacher zwei zufällige Zahlen zu multiplizieren
und dann daraus die Aufgabe zu erstellen?

Also sowas:
Delphi-Quellcode:
a:=-20+random(41);
b:=-200+random(401);

write(a*b,' / ',b,' = ');
readln(res);
i:= res = a;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.459 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Rechen-"Spiel"

  Alt 1. Jul 2012, 18:34
Setz doch das b = 0 als erste Bedingung ein, sonst dürfte es beim mod schon knallen.

[edit] *Pfüh*, zu langsam [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
diavy

Registriert seit: 11. Apr 2012
54 Beiträge
 
#4

AW: Rechen-"Spiel"

  Alt 1. Jul 2012, 18:36
Danke, das mit dem links nach rechts wusste ich nicht,hatte mir das simultan vorgestellt.
Dann wär das Problem mit dem durch 0-Teilen geklärt, bleibt noch das andere...

Edit: Ja die Idee find' ich gut, hätt ich auch drauf kommen können.
Bisher ist der andere Fehler noch nicht wieder aufgetreten.

Geändert von diavy ( 1. Jul 2012 um 18:42 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf