Matice, Nahodne polozky, Pexeso – Delphi – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Matice, Nahodne polozky, Pexeso – Delphi – Fórum – Programujte.comMatice, Nahodne polozky, Pexeso – Delphi – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Systém
~ Anonymní uživatel
61 příspěvků
10. 5. 2007   #1
-
0
-

Dobry večer,

po dlouhé době jsme se vrátil k programovaní a s hrůzou zjišťuju, že polovinu věcí jsem pozapomínal...
Takže začneme něčím jednoduchým, v delphi mi konstrukce na vyčištěni matice nefuguje.

  For A:=0 to 3 do

For B:=0 to 3 do
Pole[A,B]:=0;

Proč?
Dále, jak by jste napsali alg. pro dosazeni nahodnych polozek do matice a každa hodnota musi byt v matici obsazena 2x!
A pak už jen dokončení pexesa, ale to bych snad mohl zvládnou, můžete mi prosím poradit?
S pozdravem
Sebasti

Nahlásit jako SPAM
IP: ...–
Reklama
Reklama
Dan Stahar0
Newbie
10. 5. 2007   #2
-
0
-

To Systém:

to vyčištění by mělo bejt asi takhle ne?

for a:=0 to 3 do

begin
for b:=0 to 3 do pole[a,b]:=0;
end;


a to dosazování? Já bych to asi udělal přes Random a zkoumal bych jestli v tom poli už náhodou neni...

nějak takhle :



...
random(x);
for a:=0 to 3 do
begin
for b:=0 to 3 do if pole[a,b]=x then j:=j+1;//už tam jednou je...
end;
if (j<=1) {neni tam dvakrát} then pole[necoa, necob]:=x;//jen zhruba jak by to šlo...

Nahlásit jako SPAM
IP: ...–
13. 5. 2007   #3
-
0
-

To Danstahr:
hmm, aha tak to byla chyba, pokud ne nepletu, tak ve freepascalu bylo mozne dat 2 for pod sebe bez uvozovacich "zavorek", aha tak to je vyreseny diky.
A co se tyka toho nahodneho, napadlo me to udelat jinak, maximum policek je 16, takze 8 znaku muzu dosadit, tak udema cyklus do 8 a pokazde da nahodne souradnice a pokud ta souradnice bude obsahovat 0, tak tam dostadi 1..8, jinak se pokusi o nove "losovani"...
problem bude v tom, jak zajistit aby to nelosovalo treba 30s a tak...
A i tak moc diky za radu.

Nahlásit jako SPAM
IP: ...–
Sebastian Bušek
michal0
Newbie
13. 5. 2007   #4
-
0
-

To Sebasti:

a:=0;

b:=0;
for I:=1 to 2 do begin //z kazdeho cisla budú dva kusy
for J:=1 to 8 do begin //osem roznych cisel
if j mod 4 = 0 then begin
inc(a) //koniec riadku
b:=0; //znovu na zaciatok riadku (uz dalsieho)
end;
matica[a,b]:=J;
inc(b); //posun o poziciu doprava
end;
end;

tym ziskas zotriedenu maticu:
1 2 3 4
5 6 7 8
1 2 3 4
5 6 7 8

potom ju nahodne poprehadzujes:
for I:=1 to 7 do begin

nahodne_a:=random(7);
nahodne_b:=random(7);
nahodne_a2:=random(7);
nahodne_b2:=random(7);
pom:=matica[nahodne_a,nahodne_b]; //vyberem nahodny prvok
matica[nahodne_a,nahodne_b]:=matica[nahodne_a2,nahodne_b2];
matica[nahodne_a2,nahodne_b2]:=pom; //vymenim prvky
end;


možno sa to dá efektívnejšie, ale toto som písal z hlavy tak tam môže byť aj chyba. Ide o myšlienku. Takto to určite nebude trvať dlho ako to teoreticky pri náhodnom zisťovaní pozície môže. Dúfam že som pomohol

Nahlásit jako SPAM
IP: ...–
Sebasti
~ Anonymní uživatel
2 příspěvky
15. 5. 2007   #5
-
0
-

Ach jo, tak jsem si myslel, jak se pustím do programování... a nic :(

procedure TForm1.Button1Click(Sender: TObject);

var A, B: Byte;
type Pole = array[0..3,0..3] of byte;
begin
For A:=0 to 3 do
Begin
For B:=0 to 3 do
Begin
Pole[A,B]:=0;
End;
End;
end;

Nechápu proč tahle konstrukce použitelná snad ve všech jazycích mi tady nefunguje..?
Pokud jde o použití privátních proměnných, tak je to jen jako příklad, ani s globálními to nefunguje...
Můžete poradit, co se děje, nebo kde mám chybu?
Výpis debugeru hlásí:


[Error] Unit1.pas(35): E2029 '(' expected but '[' found


Jde o řádek kde jsou hranaté závorky...

Nahlásit jako SPAM
IP: ...–
Jan Škrášek
~ Redaktor
+1
Boss
15. 5. 2007   #6
-
0
-

nevim proc mas pred definic pole napsano type. to tam myslim nema co delat

Nahlásit jako SPAM
IP: ...–
http://jan.skrasek.com@hrachcz – webdeveloper
BlackHole
~ Anonymní uživatel
7 příspěvků
17. 5. 2007   #7
-
0
-

To hrach: jj, tam by mělo být



var Pole = array[0..3,0..3] of byte;

Nahlásit jako SPAM
IP: ...–
Jan Škrášek
~ Redaktor
+1
Boss
17. 5. 2007   #8
-
0
-

To BlackHole: no to var tam znovu byt taky nemusi ;)

Nahlásit jako SPAM
IP: ...–
http://jan.skrasek.com@hrachcz – webdeveloper
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 3 hosté

Podobná vlákna

Pexeso — založil Markéta

Pexeso — založil janca.dr

Pexeso v delphi — založil sepik

Pexeso Boti — založil Kubas129

 

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý