Ruby :: Aufgabe #3
2 Lösungen

Lotto - Simulation - 6 aus 49
Anfänger - Ruby
von Gustl
- 25.11.2012 um 16:16 Uhr
Schreiben Sie ein Programm, welches 6 Zahlen zwischen 1 und 49 abfrägt. Danach soll das Programm solange 6 Zufallszahlen berechnen bis alle 6 eingegebenen Zahlen übereinstimmen. Natürlich darf eine Zahl nicht zweimal vorkommen.
Dann soll ausgegeben werden nach wie vielen "Spielen" ein 6er erzielt wurde und wie hoch die Chance auf einen 3er, einen 4er und einen 5er war.
Dann soll ausgegeben werden nach wie vielen "Spielen" ein 6er erzielt wurde und wie hoch die Chance auf einen 3er, einen 4er und einen 5er war.
Lösungen:

puts "Lottosimulation 6 aus 49:" puts "*************************" puts "\nEs wird die Anzahl von 3/4/5 Richtigen ermittelt." puts "\nDie Simulation stoppt, wenn 6 Richtige gezogen wurden." print "\nWieviele Ziehungen sollen maximal durchgefuehrt werden? " max_ziehungen = gets.to_i puts "Geben Sie 6 Zahlen zwischen 1 und 49 ein!" a= [] #Array der gewählten Zahlen for i in 1..6 do flag = true while flag do #korrekte Zahlen sollen eingegeben werden print "Zahl #{i}: " zahl = gets.to_i if !(1..49).cover?(zahl) then puts "Die Zahl muss zwischen 1 und 49 liegen" else if !a.include?(zahl) then flag = false else puts "Die Zahl ist schon gewaehlt worden" end end end a << zahl end print "Ihre Zahlen sind: " #Ausgabe der gewählten Zahlen p a treff = [0,0,0,0,0,0,0] # Array der Treffer # Position 0 ist Anzahl von keiner Richtigen # Position 1 ist Anzahl von einer Richtigen ... count = 0 #Zähler für die Ziehungen no_6er = true #flag für keine 6 Richtige while count <= max_ziehungen and no_6er do #Schleife für die Ziehungen zufall = [] #Zufallsziehung for i in 0..5 do flag = true while flag do #Prüfung, dass keine doppelten Zahlen vorkommen zahl = rand(49) + 1 if !zufall.include?(zahl) then flag = false end end zufall << zahl end treffer = 0 for i in 0..5 do if a.include?(zufall[i]) then treffer +=1 end end if treffer >= 6 then no_6er = false p zufall #Ausgabe, wenn 6 Richtige end treff[treffer] += 1 count += 1 end #Schlussausgabe puts "Anzahl Ziehungen : #{count-1}" puts "3 Richtige: \t#{treff[3]} mal" puts "4 Richtige: \t#{treff[4]} mal" puts "5 Richtige: \t#{treff[5]} mal" puts "6 Richtige: \t#{treff[6]} mal"

def getting6(array) =begin In: - array Out: - filled array =end #Section - CODE #Section - filling the array with six random numbers between 1 und 49 array = [] while array.size < 6 do random = rand(49) + 1 if array.include?(random) == false then array.push(random) end end #Section - Output return array.sort! end def playLotto() =begin In: - nothing Out: - tries for 3, 4, 5 and 6 right numbers =end #Section - CODE #Section - Declaration try = 0 player = [] tries = {3 => 0, 4 => 0, 5 => 0, 6 => 0} #Section - Get player's numbers for i in 1..6 loop do print "Please enter number #{i}:" num = gets.to_i if player.include?(num) == false && num >= 1 && num <= 49 player.push(num) break else puts "You have entered a number that you have already before or it\'s not between 1 and 49!" end end end #Section - Try and try and try again loop do try += 1 # Reseting round array round = [] # Getting 6 random numbers for the round round = getting6(round) case (player - round).size when 0 tries[6] = try when 1 if tries[5] == 0 tries[5] = try end when 2 if tries[4] == 0 tries[4] = try end when 3 if tries[3] == 0 tries[3] = try end end break if (player - round).size == 0 end #Section - Output tries.each_pair do |key, value| puts "#{key} right numbers: #{value} tries." end end playLotto()