vypis cisel v Meme

Programovacie jazyky, rady, poradňa...
PAuLi3
Darca
Darca
Používateľov profilový obrázok
Príspevky: 4737
Registrovaný: 28 dec 2006, 18:33
Bydlisko: Komjatice,Nitra
Kontaktovať používateľa:

vypis cisel v Meme

Príspevok od používateľa PAuLi3 »

Prosim vas akym prikazom zabezpecim vypis 80 nahodnych cisel do mema ale nie pod seba ale do stvorca
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

ťažko povedať, záleží aké memo máš na mysli (v actionscripte vo flashi to bude inač ako v c++, delphi, jave..)
PAuLi3
Darca
Darca
Používateľov profilový obrázok
Príspevky: 4737
Registrovaný: 28 dec 2006, 18:33
Bydlisko: Komjatice,Nitra
Kontaktovať používateľa:

Príspevok od používateľa PAuLi3 »

sorry zabudol som je to v delphi
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

no, pomaly sa k tomu blížime. Ešte napíš aký štvorec to máš na mysli, lebo odmocnina z 80 nie je celé číslo, takže z toho ťažko spravíš štvorec. Alebo to má byť prázdny štvorec, a každá strana bude mať 20 čísel?
PAuLi3
Darca
Darca
Používateľov profilový obrázok
Príspevky: 4737
Registrovaný: 28 dec 2006, 18:33
Bydlisko: Komjatice,Nitra
Kontaktovať používateľa:

Príspevok od používateľa PAuLi3 »

error
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

nevypisuj každé číslo do mema, ale ich pridávaj do reťazca, ktorý potom vypíšeš.
var pom:string
.
.
.
pom:=pom+' '+inttostr(random(81));
.
.
.
memo.lines.add(pom);
PAuLi3
Darca
Darca
Používateľov profilový obrázok
Príspevky: 4737
Registrovaný: 28 dec 2006, 18:33
Bydlisko: Komjatice,Nitra
Kontaktovať používateľa:

Príspevok od používateľa PAuLi3 »

ale aj tak to stale vypisuje pod seba a nie do riadku
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

omg, človek chce aby si zapojil hlavu, ale nedarí sa mi. V cykle je predsa iba riadok kde staviame pom. Druhý pokus, trošku viac odheleného kodu: :)

Kód: Vybrať všetko

var pom:string;
      i:integer;
.
.
.
for I:=1 to 20 do pom:=pom+' '+inttostr(random(81));
.
.
.
memo.lines.add(pom);
PAuLi3
Darca
Darca
Používateľov profilový obrázok
Príspevky: 4737
Registrovaný: 28 dec 2006, 18:33
Bydlisko: Komjatice,Nitra
Kontaktovať používateľa:

Príspevok od používateľa PAuLi3 »

sorry uz to ide.
Diki moc

//autoeditácia príspevku ( 01 Dec 2008, 21:13 )
a predsa som este zabudol na nieco v tom zozname vypisanych cisel sa nesmu opakovat 2x tie iste cisla
tu je kod

Kód: Vybrať všetko

procedure TForm1.Button1Click(Sender: TObject);
var pom:string;
      i,z:integer;
begin
z:=Memo2.lines.count;
for i:=1 to 20 do pom:=pom+' ; '+IntToStr(random(80)+1);
memo1.lines.add(pom);

end;

end.
Cize najprv som zadal cisla do mema2 potom sa vygenerovalo 20 cisel z intervalu 80. a ako teraz zabezpecim aby mi vypisalo cisla zhodne v mem1 a meme2 a vypise ich? popripade vypise ze kolke cisla sa opakuju
neutronmind
Expert
Expert
Príspevky: 189
Registrovaný: 05 aug 2008, 14:17

Príspevok od používateľa neutronmind »

PAuLi3 napísal:a predsa som este zabudol na nieco v tom zozname vypisanych cisel sa nesmu opakovat 2x tie iste cisla
Mohol by si si vygenerovane cisla postupne ukladat do nejakeho pola, a pri kazdom novom generovani prehladavat toto pole, ci sa tam to cislo uz nenachadza.
PAuLi3 napísal:Cize najprv som zadal cisla do mema2 potom sa vygenerovalo 20 cisel z intervalu 80. a ako teraz zabezpecim aby mi vypisalo cisla zhodne v mem1 a meme2 a vypise ich? popripade vypise ze kolke cisla sa opakuju
Mozes napriklad v cykle porovnavat kazdy hodnotu v meme1 s kazdou hodnotou v meme2, ci sa rovnaju.
Bohuzial obidva postupy budu imho dost casovo zlozite.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

už sa tu riešilo velakrát ako vybrať n náhodných čísel bez opakovania. Neviem prečo to robíš cez druhé memo, keď ho môžeš nahradiť polom. Do tohto pola ktoré má n prvkov (v tvojom prípade 80) nahádžeš postupne čísla od 1 do 80 (for I:=1 to 80 do pole:=i) a potom ich náhodne premiešaš (napríklad 30 krát vymeníš náhodne dva prvky). Nakoniec vybereš prvých 20. Keďže je tam každé číslo iba raz, máš zaručené že sa neopakujú. A keďže si ich náhodne poprehadzoval, máš zaručenú náhodnosť (a teda nejdú zasebou)
Ak by si si tým mal problém, treba pohladať. Vravím že to tu už bolo viackrát, určite to v niektorej téme nájdeš už zapísané aj v programe (čo ale nie je vôbec zložité)
PAuLi3
Darca
Darca
Používateľov profilový obrázok
Príspevky: 4737
Registrovaný: 28 dec 2006, 18:33
Bydlisko: Komjatice,Nitra
Kontaktovať používateľa:

Príspevok od používateľa PAuLi3 »

a ako mam teda premiesat tie prvky?

Kód: Vybrať všetko

procedure TForm1.Button1Click(Sender: TObject);
var a:array[1..80] of integer;
    i,p,j:integer; //p - pomocna premenna
    s:string;
    begin
 for j:=20 downto 2 do
 begin
  for i:=1 to 20 do a[i]:=i;
  i:=random(20)+1;
  p:=a[i];
  a[i]:=a[j];
  a[j]:=p;
 end;
 s:='';
 for i:=1 to 20 do s:=s +' ; ' + IntToStr(a[i]);
 Edit1.text:=s;
end;
pretoze takto ked sa to vytvori tak to bohvieako nepremiesa
Teda mam tam chybu pretoze sa vypisuju len cisla od 1 do 20 a nie do 80
Prílohy
ghdfgh.JPG
neutronmind
Expert
Expert
Príspevky: 189
Registrovaný: 05 aug 2008, 14:17

Príspevok od používateľa neutronmind »

Skus to nejak takto

Kód: Vybrať všetko

 for i:=1 to 80 do a[i]:=i; 
 for j:=20 downto 1 do
 begin 
  i:=random(80)+1; 
  p:=a[i]; 
  a[i]:=a[j]; 
  a[j]:=p; 
 end; 
PAuLi3
Darca
Darca
Používateľov profilový obrázok
Príspevky: 4737
Registrovaný: 28 dec 2006, 18:33
Bydlisko: Komjatice,Nitra
Kontaktovať používateľa:

Príspevok od používateľa PAuLi3 »

aha uz facha :-D
a teraz ako vypisem pocet zhodnych cisel v edite1 a v edite2?
v edite1 som zadal 10 cisel ja
v edite 2 sa vygenerovalo 20 lubovolnych cisel
a do editu3 by sa malo vypyisat pocet zhodnych cisel
neutronmind
Expert
Expert
Príspevky: 189
Registrovaný: 05 aug 2008, 14:17

Príspevok od používateľa neutronmind »

Tak len porovnaj cisla v edite1 s cislami v edite2 a ak su zhodne, tak zvys hodnotu nejakej premennej, ktora ti bude udavat pocet tych zhodnych cisel. Nic tazke. :)
Napísať odpoveď