HomeArtikelDownloadsForum
PCFreunde.deForumEntwicklungDelphi, Pascal
Besucher online: 978
Schnellsuche

Anzeigen

Community

Foren
Delphi, Pascal Seite 1/2
6 aus 49 Hilfe!
AntwortenNeues ThemaZur Themenliste
Seiten:
1 2
Weiter
Nachricht
Puppen-spieler
Titel: 6 aus 49 Hilfe! 17.09.2009 14:21
19 Punkte (?)
Anmeldungsdatum: 07.09.2009
Beiträge: 19
Hallo Leute. Ich soll ein Lottoprogramm programmieren und hänge total fest. Hier erstmal mein Quelltext, aber vorher: ich führe das Ganze in 3 Memos aus, im ersten gebe ich meine Lottozahlen ein und das 2te gibt die gezogenen aus und das dritte die übereinstimmungen, mein problem ist jetzt, dass ich es nicht schaffe, doppelte zahlen im Lottoprogramm nicht auszulöschen.Außerdem gebe ich die Anzahl der Übereinstimmungen in einem Label aus.Und auch die Fehlerabfederung lässt zu wünschen übrig. Ich hoffe auf eure hilfe:
Meine Basis (Delphi7):

begin
randomize;
FOR i:=1 TO 6 DO
begin
z:=random(49)+1;
memo2.lines.add(IntToStr(z));
end;

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;
end;
label1.caption:=IntToStr(anz);

So und hier kommt mein Fehler:

x:=0
while x<>memo2.lines.count DO
IF memo1.lines=memo2.lines[x] then
begin memo2.lines.delete(x);
end else
x:=x+1;
end;


so, und dann kommt immer Inkompatible Typen String und Integer...
Private Nachricht senden  
 
windoof
Titel: 6 aus 49 Hilfe! 17.09.2009 19:56
3.113 Punkte (?)
Anmeldungsdatum: 12.08.2007
Beiträge: 2.714
aalso auf den ersten blick würde ich mal sagen, dass hier auf jeden fall ein fehler liegt:
Zitat:
IF memo1.lines=memo2.lines[x] then

memo1.lines ist ein array, während memo2.lines[x] genau eine zeile des memo 2 ausgibt (die zeile an der stelle x --> string)

EDIT:
Zitat:
x:=0
while x<>memo2.lines.count DO
IF memo1.lines=memo2.lines[x] then
begin memo2.lines.delete(x);
end else
x:=x+1;
end;

was soll das eigentlich bewirken?^^

[Zuletzt bearbeitet: 17.09.2009 19:58]

________________________________________
BÄMM HEADSHOT !! VOLL INS KNIE!! :mrgreen:
Mein Rechner Meine HP
Private Nachricht senden  
 
Puppen-spieler
Titel: 6 aus 49 Hilfe! 17.09.2009 20:34
19 Punkte (?)
Anmeldungsdatum: 07.09.2009
Beiträge: 19
naja wart mal, bin iwie weiter gekommen, so das letzte mal aus gedanken löschen ^^
der Zweck ist, dass aus den generierten zahlen mit einer while-do schleife die doppelten zahlen eleminiert und ersetzt werden sollen

also den letzten Algorithmus einfach weg denken und dafür brauche ich nen neuen der halt die doppelten generierten zahlen aus memo2 löscht....?

Private Nachricht senden  
 
windoof
Titel: 6 aus 49 Hilfe! 17.09.2009 20:53
3.113 Punkte (?)
Anmeldungsdatum: 12.08.2007
Beiträge: 2.714
ich würds einfacher machen:
nimm dir ne listbox oder ähnliches und lass da bei form.create die zaheln von 1 bis 49 reinschreiben mit

listbox1.clear;
for i:=1 to 49 do
listbox1.items.add(i);

dann generierst du die zufallszahlen wiefolgt in dein Memo:

for i:=0 to 5 do begin
x:=random(listbox1.items.count);
memo2.lines.add(listbox1.items[x]);
listbox1.items.delete(x);
end;

damit nimmst du einen wert an einer zufälligen stelle zwischen 1 und 49, schreibst ihn in deine auswahl und löscht ihn anschließend aus der liste der verfügbaren zahlen :wink:

MfG
windoof

________________________________________
BÄMM HEADSHOT !! VOLL INS KNIE!! :mrgreen:
Mein Rechner Meine HP
Private Nachricht senden  
 
Puppen-spieler
Titel: 6 aus 49 Hilfe! 17.09.2009 21:06
19 Punkte (?)
Anmeldungsdatum: 07.09.2009
Beiträge: 19
ähm das problem ist, dass wir das was da steht als vorlage nutzen sollen und den rest eben mit ner while-do schleife so machen sollen, dass die zahlen halt net doppelt sind ....
das ist einfach nur ne schulaufgabe, der fragt mir löcher in bauch wenn ich mit sowas komme^^ hatten wir halt noch nie :(
Private Nachricht senden  
 
windoof
Titel: 6 aus 49 Hilfe! 17.09.2009 21:07
3.113 Punkte (?)
Anmeldungsdatum: 12.08.2007
Beiträge: 2.714
achso...
naja gut^^
welche klasse bist du?
ich programmier schon n paar jahre mit delphi, sry :mrgreen:

ähhm
ich setz mich ma kurz hin und schau, was ich draus machen kann :wink:

________________________________________
BÄMM HEADSHOT !! VOLL INS KNIE!! :mrgreen:
Mein Rechner Meine HP
Private Nachricht senden  
 
Puppen-spieler
Titel: 6 aus 49 Hilfe! 17.09.2009 21:10
19 Punkte (?)
Anmeldungsdatum: 07.09.2009
Beiträge: 19
naja jetzt in der 13ten, hatten auch Lehrerwechsel und der kommt jetzt mit Algorithmen, von denen ich noch nie gehört hab, voll fürn Arsch sowas :shock:
Private Nachricht senden  
 
windoof
Titel: 6 aus 49 Hilfe! 17.09.2009 21:26
3.113 Punkte (?)
Anmeldungsdatum: 12.08.2007
Beiträge: 2.714
also wenn du unbedingt doppelte zahlen rausgelöscht haben willst:

for i:=0 to memo2.Lines.Count-2 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;

wobei dieser algorithmus eben nur doppelte zaheln auslöscht und keine neuen einfügt, da man das ganze sonst rekursiv lösen müsste, weil beim auffüllen, ja wieder eine zahl doppelt sein könnte^^

MfG

________________________________________
BÄMM HEADSHOT !! VOLL INS KNIE!! :mrgreen:
Mein Rechner Meine HP
Private Nachricht senden  
 
Puppen-spieler
Titel: 6 aus 49 Hilfe! 17.09.2009 21:33
19 Punkte (?)
Anmeldungsdatum: 07.09.2009
Beiträge: 19
ahso, na ich probier das gleich mal aus :D
und dann mal gucken was passiert^^
fällt dir vielleicht noch ne simple Fehlerabfederung ein? Halt dass man nur 6 zahlen ins erste Memo eingeben und keine Buchstaben eingeben kann?!
Private Nachricht senden  
 
Puppen-spieler
Titel: 6 aus 49 Hilfe! 17.09.2009 21:39
19 Punkte (?)
Anmeldungsdatum: 07.09.2009
Beiträge: 19
also jetzt geht gar nix mehr o.o
im Memo wird nichts mehr ausgegeben seit ich das jetzt noch dazu geschrieben habe :(
Private Nachricht senden  
 
Puppen-spieler
Titel: 6 aus 49 Hilfe! 17.09.2009 21:41
19 Punkte (?)
Anmeldungsdatum: 07.09.2009
Beiträge: 19
upss zeile vergessen, momXD
Private Nachricht senden  
 
windoof
Titel: 6 aus 49 Hilfe! 17.09.2009 21:49
3.113 Punkte (?)
Anmeldungsdatum: 12.08.2007
Beiträge: 2.714
so also hier dein quelltext zur überprüfung, ob einige tipps richtig waren, incl. abfrage, ob nur zahlen eingegeben wurden und ob diese zwischen 1 und 49 liegen

wenn du willst, erklär ich dir das auch noch

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;
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;
end;
label1.caption:=IntToStr(anz);
end;
except
Showmessage('Fehler! Bitte geben Sie nur Zahlen ein!');
end;

________________________________________
BÄMM HEADSHOT !! VOLL INS KNIE!! :mrgreen:
Mein Rechner Meine HP
Private Nachricht senden  
 
Puppen-spieler
Titel: 6 aus 49 Hilfe! 17.09.2009 21:50
19 Punkte (?)
Anmeldungsdatum: 07.09.2009
Beiträge: 19
okay. vielen dank, soweit funzt das jetzt :)
fehlt mir halt nur noch die Fehlerabfederung...:(
achso, und iwie soll ich noch ne Superzhl generieren, ich komm so schon nicht mit Lotto klar und weiß nicht wie das funzt o.o
Private Nachricht senden  
 
windoof
Titel: 6 aus 49 Hilfe! 17.09.2009 21:51
3.113 Punkte (?)
Anmeldungsdatum: 12.08.2007
Beiträge: 2.714
die abfederung steht oben^^

und superzahl generiern ...
ja auch kein problem, aber ich bin eigtl nciht hier, um dir deine hausaufgaben zu machen^^

________________________________________
BÄMM HEADSHOT !! VOLL INS KNIE!! :mrgreen:
Mein Rechner Meine HP
Private Nachricht senden  
 
Puppen-spieler
Titel: 6 aus 49 Hilfe! 17.09.2009 21:54
19 Punkte (?)
Anmeldungsdatum: 07.09.2009
Beiträge: 19
nee is mir ja schon klar...ich versuch das ja auch schon seit stunden....

jedenfalls nochmal zur Abfederung, funktioniert ja schöbn und gut, der macht aber trotzdem Zufallszahlen und Übereinstimmungwn...aber wenn es nur so geht reicht das auch...
Private Nachricht senden  
 
AntwortenNeues ThemaZur Themenliste
Seiten:
1 2
Weiter
Community Login
eMail:
Passwort:
Auto-Login