prob mit SAU EINFACHER Aufgabe...:-( [gelöst!]

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

5k41

Betreff: prob mit SAU EINFACHER Aufgabe...:-( [gelöst!]

BeitragMo, Okt 03, 2005 12:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
ich hab mich letztens mal wieder hin gesetzt um fü meine kleine schwester ein mathe programm zu programmieren..es ist nun fast fertig das einzige was noch fehlt ist das zufalls generierte erstellen von geteilt aufgaben...das problem ist nämlich das sie noch net 11/5 oder so rechnen kann(da müsste man ja mit rest/kommzahlen rechnen was ich möglichst vermeiden wollte...)
desswegen hab ich diese einfache schleife geschrieben...
BlitzBasic: [AUSKLAPPEN]

For i=0 To 5000

If wert1<>0 And wert2<>0 Then If wert1/wert2=i Then div=1

Next

das problem is er stellt imm noch aufgaben wie 11/5 wieso????
PS:Danke schonmal im vorraus für die antworten Wink
  • Zuletzt bearbeitet von 5k41 am Do, Okt 06, 2005 12:18, insgesamt einmal bearbeitet
 

Ava

Gast

BeitragMo, Okt 03, 2005 12:49
Antworten mit Zitat
Du kannst ja eine Aufgabe vorher testen, ob ein sauberes Ergebnis herauskommt...

BlitzBasic: [AUSKLAPPEN]
If Int(a / b) = Float(a / b) Then (Aufgaben geben) Else (Neue Aufgabe)

5k41

BeitragMo, Okt 03, 2005 12:55
Antworten mit Zitat
Benutzer-Profile anzeigen
erstma danke für deine schnelle antwort!die for schleife sollte ja die aufgabe testen
if wert1/wert2=i...dachte das wenn die for schleife imma in einser schritten hoch zählt das dann geht...mache das nu ma so!mal sehn obs was wird

Thx

5k41

BeitragMo, Okt 03, 2005 13:06
Antworten mit Zitat
Benutzer-Profile anzeigen
macht er irgendwie net...ken bisschen hatte zuerst einen fehler eingebaut abba nun macht er es genau so wie vorher...Sad

PS:sry wegen doppel post!

Ctuchik

BeitragMo, Okt 03, 2005 13:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Da wert1 und wert2 keien Floats sind rundet das Programm beim Teilen. 11/5 kommt also 2 raus.

Eine besser Methode um zu überprüfen ob die Zahlen durcheinander teilbar sind ist der Befehl 'Mod', der den Rest bei einer Divison zurückgibt:
BlitzBasic: [AUSKLAPPEN]
SeedRnd MilliSecs()
Repeat
wert1 = Rand(2,100)
wert2 = Rand(2,100)
Until (wert1 Mod wert2 = 0) And (wert1 <> wert2)
Print \"Was ist \" + wert1 + \" geteilt durch \" + wert2 + \"?\"
Zu den Nebenwirkungen gehören trockener Mund, Übelkeit, Erbrechen, Harnstau, schmerzhafter rektaler Juckreiz, Halluzinationen, Demenz, Psychose, Koma, Tod und Mundgeruch!
Magie eignet sich nicht für alle!
Fraget euren Arzt oder Apotheker!

5k41

BeitragMo, Okt 03, 2005 13:26
Antworten mit Zitat
Benutzer-Profile anzeigen
sowas hab ch gebraucht!!!!!

THX!!!!
 

Ava

Gast

BeitragMo, Okt 03, 2005 13:31
Antworten mit Zitat
5k41 hat Folgendes geschrieben:
macht er irgendwie net...ken bisschen!


Hm, dann hast Du meinen Tipp falsch umgesetzt, bei mir funktioniert das gut. Wink

BlitzBasic: [AUSKLAPPEN]
Graphics 800, 600, 16, 2
SetFont LoadFont(\"arial\", 24)
SeedRnd MilliSecs()

Repeat

Repeat
a = Rand(4, 100)
b = Rand(2, a - 1)
Until a / b = Float(a) / Float(b)

Print
Print \"Berechne \" + a + \" geteilt durch \" + b + \".\"

c$ = Input(\"Das Ergebnis ist ? \")

Select Int(c) = (a / b)
Case True : Print \"Richtig!\"
Case False : Print \"Leider Falsch! Das Ergebnis wäre \" + (a / b) + \" gewesen!\"
End Select


If c = \"\" Then End

Forever


Aber das mit dem MOD ist natürlich auch sehr schön! Smile
Da war ich gar nicht drauf gekommen... Confused

5k41

BeitragMo, Okt 03, 2005 13:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Is ja auch egal^^hab den tipp ziemlich wörtlich von oben übernommen...wobei die lösung mit mod auch noch nen hacken hat bei 10 durchläufen sind ungeähr bei 9 die lösung 2 und bei einem was anderes^^woran liegt das wieder??

verbesserung:ich hbas eben grad noch 40 ma versucht und imma is 2 rausgekommen...wieso?

SpionAtom

BeitragMo, Okt 03, 2005 18:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Ein anderer Lösungsweg:
Mach die Umkehraufgabe.

Mach zwei Faktoren:
z1 = rand(1,10)
z2 = rand(1,10)
ergebnis = z1 * z2


Die Aufgabe wäre dann:
Print ergebnis + " durch " + z2 + "= ?"

Die Lösung ist natürlich z1!

Code: [AUSKLAPPEN]

Repeat
   z1 = Rand(1, 10)
   z2 = Rand(1, 10)
   er =  z1 * z2
   
   a = Input$(er + " geteilt durch " + z2 + " = ")
   If a = z1 Then
      Print "Richtig"
   Else
      Print "Falsch, richtig wäre " + z1
   End If
   Print   
Forever

5k41

BeitragDi, Okt 04, 2005 12:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke!!! Das is glaub ich der beste weg..hab da mit einem Auge auch schon mal dran gedacht abba ist dann an der umsetzung gescheitert...denke so funtzt das!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group