Určení pozice v matici nebo poli – Delphi – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Určení pozice v matici nebo poli – Delphi – Fórum – Programujte.comUrčení pozice v matici nebo poli – Delphi – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
xy30000
Newbie
12. 5. 2009   #1
-
0
-

Ahoj, mám takovýto rébus, generuji matici s náhodnými čísly o počtu prvků 4x4. Tuto matici převedu do pole o počtu 16 prvků. Z toho pole vypíši prostřední 2 hodnoty na obrazovku, program ale potřebuji upravit tak, aby po těch dvouch číslech, se VYPSALY I POZICE TĚCHTO DVOU ČÍSEL V MATICI, díky za cenné rady.


uses
SysUtils;

var a:array[1..4,1..4] of integer;

p:array[1..16] of integer;

i,j,k,dd : integer;

begin
randomize;
for i:=1 to 4 do
for j:=1 to 4 do
a[i,j]:=random(99)+1;


for i:=1 to 4 do
begin
for j:=1 to 4 do
write(a[i,j]: 4);
writeln;


end;

k:=0;
for i:=1 to 4 do

for j:=1 to 4 do


begin

k:=k+1;
p[k]:=a[i,j];

end;
writeln;

for k:=1 to 16 do write (p[k]:3);

for k:=1 to 1 do
writeln;
writeln;
write(p[8],' ',p[9]);

readln;
end.

Nahlásit jako SPAM
IP: 81.19.35.–
Reklama
Reklama
KIIV+42
God of flame
12. 5. 2009   #2
-
0
-

kdybys to mel cislovane 0..15 tak je to snadnejsi.. radek := k div 4; sloupec := k mod 4;
protoze ale mas cislovano od 1 tak musis udelat mensi upravu: radek := ((k-1) div 4)+1; sloupec :=(( k-1) mod 4)+1;
pripadne se da vynechat +1 pokud staci pozice od 0

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Honzc0
Stálý člen
13. 5. 2009   #3
-
0
-

To xy3000
Proč tak složitě? (mám na mysli tolik cyklů, např poslední for k := 1 to 1 je úplně zbytečný)
Zkus to takhle:

uses
SysUtils;

var a:array[1..4,1..4] of integer;
p:array[1..16] of integer;
i,j,k:integer;
s:array[1..2] of string;

begin
randomize;
writeln;
for i := 1 to 4 do
begin
for j := 1 to 4 do
begin
a[i,j] := random(99)+1;
write(a[i,j]:4);
end;
writeln;
end;
writeln;
k := 0;
for i := 1 to 4 do
for j := 1 to 4 do
begin
k := k+1;
p[k] := a[i,j];
write(p[k]:4);
if k=8 then
s[1] := ' p[8]=a['+inttostr(i)+','+inttostr(j)+'] =';
if k=9 then
s[2] := ' p[9]=a['+inttostr(i)+','+inttostr(j)+'] =';
end;
writeln;
writeln;
writeln(s[1],p[8]:3,', ',s[2],p[9]:3);
readln;
end.

Nahlásit jako SPAM
IP: 85.207.57.–
xy3000
~ Anonymní uživatel
15 příspěvků
13. 5. 2009   #4
-
0
-

Díky Honzc, skutečně to funguje, akorát nechápu toto

s:array[1..2] of string;

a tohle

if k=8 then
s[1] := ' p[8]=a['+inttostr(i)+','+inttostr(j)+'] =';
if k=9 then
s[2] := ' p[9]=a['+inttostr(i)+','+inttostr(j)+'] =';

Nahlásit jako SPAM
IP: 213.192.8.–
Honzc0
Stálý člen
14. 5. 2009   #5
-
0
-

To xy3000
s:array[1..2] of string; je dvou prvkové pole textů (podobně jako tvoje pole p je 16-ti prvkové
pole celých čísel), slouží k "uložení" těch dvou indexů matice
if k=8 then
s[1] := ' p[8]=a['+inttostr(i)+','+inttostr(j)+'] =';
Tady se zjistí, kdy je to osmý člen posloupnosti (k=8) a právě do s[1] se zapíše (jako text), že se jedná
o p[8] a to je v matici a i-tý řádek (inttostr(i) totiž převede číslo i na textovou podobu) a j-tý
sloupec.
To samé pro k=9

Nahlásit jako SPAM
IP: 85.207.57.–
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, 15 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý