AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

6 aus 49 will nicht so richtig

Ein Thema von funkuchn · begonnen am 20. Sep 2009 · letzter Beitrag vom 19. Okt 2011
Antwort Antwort
Seite 1 von 6  1 23     Letzte »    
funkuchn

Registriert seit: 20. Sep 2009
Ort: Boblitz
81 Beiträge
 
Delphi 6 Professional
 
#1

6 aus 49 will nicht so richtig

  Alt 20. Sep 2009, 14:51
Hi Leute!!
Erstmal zur Erklärung, ich soll 6 aus 49 programmieren, mache das in 3 memos, im 1ten werden die zahlen eingegeben,
im 2ten lottozahlen erzeugt und im 3ten die übereinstimmungen angezeigt.
Funktionier soweit. Jetzt habe ich aber das Problem, dass ich beim Eingeben der Zahlen auch doppelte
Zahlen, wie 2,2,2 eingeben kann, keine Ahnung wie ich das Beheben soll
Manchmal gibt der mir dann bei den Übereinstimmungen auch doppelte Zahlen an, ich bin ziemlich verzweifelt,
habe das ganze Wochenende schon dran gebastelt und sehe nun gar nicht mehr durch.
Guckt bitte mal meinen Quelltxt durch, ob ihr den / die Fehler seht
Vielen Dank, LG Susi
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i,z,x,y,anz,o: integer;
{startet Zufallszahlen für Memo2}
begin
randomize;
For i:=1 TO 6 DO
 begin
 z:=random(49)+1;
 memo2.lines.add(IntToStr(z));
 end;
{zieht zufällige Superzahl}
begin
randomize;
 Superzahl:=random(10)+1;
 edit2.Text:=(IntToStr(Superzahl));
end;
{Vergleich der eingegebenen mit den gezogenen Zahlen}
anz:=0;
For x:=0 To memo1.Lines.Count-1 Do
 For y:=0 To memo2.Lines.Count-1 Do
  IF memo1.Lines[x]=memo2.Lines[y]
  then
   begin
   memo3.Lines.add(memo1.lines[x]);
   anz:=anz+1;
   label5.caption:=IntToStr(anz);
   end;
   
{Vergleich der Superzahlen}
If edit1.Text=edit2.Text
then
 begin
 edit3.Text:=edit1.Text;
 label8.Caption:='Superzahl stimmt überein!!'
 end
else
label8.caption:='leider nicht..';

{Elememinierung doppelter Zahlen}
for i:=0 To memo2.Lines.count-1 DO
 begin
 o:=i+1;
 while o<memo2.lines.count do
  begin
  IF memo2.lines[i]=memo2.Lines[o] then
  begin
  memo2.lines.Delete(i);
  dec(o);
  end;
  inc(o);
  end;
  end;

{Fehlerabfederung}
anz:=0;
if memo1.Lines.Count<>6 then
 begin
 ShowMessage('Bitte geben Sie genau 6 Zahlen als Tipp ein!');
 exit;
 end;
 try
  For x:=0 TO memo1.lines.count-1 DO begin
  if not ((strToInt(memo1.Lines[x])<50) and (strToInt(memo1.Lines[x])>0)) then begin
  Showmessage('Bitte geben Sie nur Zahlen zwischen 1 und 49 ein!');
  exit;
end;
end;
 except
 Showmessage('Fehler! Bitte geben Sie Zahlen ein!');
end;
 try
 if not ((strToInt(edit1.Text)<10))
 then
 begin
 showmessage('Bitte geben Sie nur Zahlen zwischen 0 und 9 ein!');
 exit;
end;
 except
 Showmessage('Fehler! Bitte geben Sie Zahlen ein!');
end;
end;
end.
[edit=Matze][delphi]-Tag geschlossen. MfG, Matze[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#2

Re: 6 aus 49 will nicht so richtig

  Alt 20. Sep 2009, 15:08
Erstmal herzlich willkommen in der DP

Dieses Thema hatten wir hier schon öfter.
Gehe 'mal bitte ins Suchfeld und suche folgenden Thread:
Zitat:
Zufallszahl ziehen ohne wiederholung


Das dürfte Dir erstmal weiterhelfen

Gruß

Wolfgang
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: 6 aus 49 will nicht so richtig

  Alt 20. Sep 2009, 15:11
Hallo,

dazu gibt es mehrere Ansätze.

In dem Memo mit den eingegebenen Zahlen Sortierung einschalten und doppelte Einträge unterdrücken.

Wenn Du das zu Fuss machen willst.
Schaue Dir mal Memo1.lines.indexOf() an.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
funkuchn

Registriert seit: 20. Sep 2009
Ort: Boblitz
81 Beiträge
 
Delphi 6 Professional
 
#4

Re: 6 aus 49 will nicht so richtig

  Alt 20. Sep 2009, 15:14
hey und danke

und wie stelle ich ersteres ein?
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: 6 aus 49 will nicht so richtig

  Alt 20. Sep 2009, 15:25
.. nun. da habe ich mich etwas weit aus dem Fenster gelehnt.
TMemo.lines hat keine Sorted Eigenschaft.

Delphi-Quellcode:
var
  sl :TStringList;
begin
  sl := TStringList.Create;
  sl.assign(Memo1.lines);
  sl.Sorted := true;
  sl.Duplicates := dupIgnore;
  sl.add(Edit1.Text);
  Memo1.Lines.Assign(sl);
  sl.free;
end;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#6

Re: 6 aus 49 will nicht so richtig

  Alt 20. Sep 2009, 15:26
Ein besserer Ansatz wäre:

1. Erzeuge eine Liste aller Zahlen im Interval [1;49] --> array
2. Ziehe eine beliebige Zahl aus der Liste, zeige sie an.
3. Lösche(!) nun dieses Element aus der Liste.
4. Führe die Schritte 2..4 insgesamt 6x aus
Fertig. Das ist genau das, was man beim Lotto (z.B.) macht.

Gruß

Wolfgang
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824
  Mit Zitat antworten Zitat
funkuchn

Registriert seit: 20. Sep 2009
Ort: Boblitz
81 Beiträge
 
Delphi 6 Professional
 
#7

Re: 6 aus 49 will nicht so richtig

  Alt 20. Sep 2009, 15:29
ich arbeite ja nun nicht so lange mit delphi...
iwie komme ich mit euren antworten gar nicht mehr klar
habt ihr nicht was ganz ganz einfaches oder n stücke quelltext?
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#8

Re: 6 aus 49 will nicht so richtig

  Alt 20. Sep 2009, 15:58
Folgendes legt im Array Lotto erst einmal alle 49 Zahlen von 1..49 ab.
Dann ziehst Du eine Zahl (z.B. 26) und setzt an der Stelle Lotto[26] eine 0;
Das ganze machst Du 6x und suchst am Ende nach den Nullen im Lotto-Array.
Ich hoffe, Du kommst jetzt weiter, wenn nicht, wieder melden.

Gruß

Wolfgang

Delphi-Quellcode:
var
  Form1: TForm1;
  lotto: array[1..49] of word;
  lotto2: array[1..6] of integer;
  sorted: array[1..6] of word;
  i,j:integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  randomize;
end;

procedure TForm1.Button1Click(Sender: TObject);
var i,zaehler,temp:integer;
begin
  //Listbox1.Clear;
  zaehler:=0;
  for i:=1 to 49 do lotto[i]:=i;
  //edit1.Text:=inttostr(lotto[34]); //Nur Test
  while zaehler<6 do
  begin
     temp:=random(49)+1;
     while lotto[temp]=0 do
     begin
       temp:=random(49)+1;
     end;
        lotto[temp]:=0;
        inc(zaehler);
        Listbox1.Items.Add(Inttostr(temp));
        lotto2[zaehler]:=temp;
     //Edit1.Text:=Listbox1.items.text[1]+Listbox1.items.text[2]
  end;
  Edit1.Text:=IntToStr(lotto2[1]);
  Edit2.Text:=IntToStr(lotto2[2]);
  Edit3.Text:=IntToStr(lotto2[3]);
  Edit4.Text:=IntToStr(lotto2[4]);
  Edit5.Text:=IntToStr(lotto2[5]);
  Edit6.Text:=IntToStr(lotto2[6]);

end;
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824
  Mit Zitat antworten Zitat
funkuchn

Registriert seit: 20. Sep 2009
Ort: Boblitz
81 Beiträge
 
Delphi 6 Professional
 
#9

Re: 6 aus 49 will nicht so richtig

  Alt 20. Sep 2009, 16:06
okay...
aber unser lehrer möchte nicht, dass wir arrays verwenden u wir sollen mit memos arbeiten
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#10

Re: 6 aus 49 will nicht so richtig

  Alt 20. Sep 2009, 16:13
Löschen eines Memos funktioniert mit z.B. Memo1.Clear.
Ausgaben in Memos funktionieren mir z.B. Memo1.Lines.Add('Hallo Welt')

Hoffe, das hilft Dir weiter

Gruß

Wolfgang
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 6  1 23     Letzte »    


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 02:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz