kleines prog coden

wageck

BSD Noop
Hi mein schwiegervater hat mich gefragt ob ich ihm ein programm schreiben könnte das folgendes macht:

erstmal sollen 8 zahlen zwischen 0-70 eingegeben werden davon sollen 3-8 stk zufällig ausgewählt werden

als nächstes sollen 20 zahlen zwischen 0-70 zufällig ausgesucht werden nun sollen diese 20 zahlen aber noch die oben ausgewählten enthalten

da ich aber nicht so der coder bin wollte ich fragen ob mir das hier jemand schnell machen könnte bzw. ob ihr mir tips geben könntet wie ich das umsetzen soll

könnte mir das jemand schnell umsetzen ?
 
Erstmal sollen 8 zahlen zwischen 0-70 eingegeben werden davon sollen 3-8 stk zufällig ausgewählt werden

als nächstes sollen 20 zahlen zwischen 0-70 zufällig ausgesucht werden nun sollen diese 20 zahlen aber noch die oben ausgewählten enthalten

Sorry, ich kann der Aufgabenstellung nicht wirklich folgen (Arg, Ferien...) aber könntest du den 2ten Abschnitt bitte nochmal erklären?!
Wie ist das mit den 20 Zahlen gemeint?

Wenn ichs verstehe, guck ichs mir gerne mal an :D

mfg
explorer
 
Schnell dahingesaut, keine Kommentare (Denkarbeit wird dem Leser überlassen), keinerlei Fehlerbehandlung (Denkarbeit wird dem Anwender überlassen), Entropie könnte besser sein und zu allem Überfluß auch noch in Java:
Code:
public class Bullshit
{
 public static void main(String[] args)
 {
  boolean numbers[] = new boolean[71];
  int input[] = { -1, -1, -1, -1, -1, -1, -1, -1 };
  int random, counter;
  java.util.Scanner in = new java.util.Scanner(System.in);

  for (counter = 1; counter < 9; counter++)
  {
   System.out.printf("%d. Zahl eingeben: ", counter);
   input[counter-1] = in.nextInt();
  }

  System.out.print("Anzahl der aus diesen Zahlen auszuwählenden: ");
  counter = in.nextInt();
  int numbersleft = 20 - counter;
  while (counter > 0)
  {
   random = (int) (Math.random() * 8);
   if (input[random] != -1 && !numbers[input[random]])
   {
    numbers[input[random]] = true;
    counter--;
   }
  }

  while (numbersleft > 0)
  {
   random = (int) (Math.random() * 71);
   if (!numbers[random])
   {
    numbers[random] = true;
    numbersleft--;
   }
  }

 for (counter = 0; counter < 71; counter++)
  if (numbers[counter])
     System.out.print((counter) + " ");
 }
}
Besser wäre eine C-Version unter Nutzung der systemeigenen Entropie. Da allerdings nicht klar ist, auf welchem System das laufen soll, habe ich eine möglichst plattformunabhängige Lösung gewählt.

Für was braucht der Schwiegervater so einen Blödsinn überhaupt?
 
das ist für irgend eine lotto alternative frag mich nicht ;-) laufen soll es auf xp

leider hab ich nocht nicht genug bsd kenntnise um ihm bsd zu installieren und zu betreuen

sobald ich zeit hab schauz ich mir den code mal an sorry im mom wenig zeit muss mich um den kleinen kümmern
 
Habt ihr mal überlegt, sowas vielleicht in Excel oder OOCalc zu machen? Die haben beide eine Menge Funktionen (auch Zufallszahlen), Enduser-tauglich und man muss nicht programmieren.

Ein eher pragmatischer Ansatz, ein Versuch wärs wert...
 
Ruby loesung

Hier ist ein ruby script fuer dein problem. Hoffe es macht was du willst, den sinn habe ich naemlich nicht verstehen koennen ;)
Fuer windows gibts programme wie rb2exe die ein ruby script zu einer windows executable zusammenbauen ohne abhaengigkeiten. Schoener waere bestimmt ein kleines webinterface.

Code:
begin
 print "Gib 8 zahlen ein: (wie: 1,2,3...): "
 input = STDIN.gets.split(',').collect { |c| c.to_i if c.to_i >= 0 && c.to_i <= 70 or raise "0-70" }
 raise "8 zahlen sagte ich" if input.length != 8
 puts "Du hast gewaehlt: " + input.inspect

 input_new = []
 (rand*6+3).to_i.times do
   idx = rand*8.to_i
   redo if input[idx] == -1
   input_new << input[idx]
   input[idx] = -1
 end

 puts "Ich nehme davon: " + input_new.inspect

 lotto = Array.new(20).fill(-1)
  input_new.each do |inp|
   idx = (rand*lotto.length).to_i
   redo if lotto[idx] != -1
   lotto[idx] = inp
 end

 lotto = lotto.collect { |it| it == -1 ? (rand * 70).to_i : it }
 puts "Ergebnis: " + lotto.inspect
rescue
 puts "Error: "+ $! and exit
end
 
Zurück
Oben