Soustředné čtverce do matice – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Soustředné čtverce do matice – Pascal – Fórum – Programujte.comSoustředné čtverce do matice – Pascal – Fórum – Programujte.com

 

Fifík
~ Anonymní uživatel
3 příspěvky
17. 5. 2013   #1
-
0
-

Zdravím, potřeboval bych pomoct s úkolem. Mám naplnit automaticky čtvercovou celočíselnou matici A (n x n), n<10, tak, aby obsah vytvořil soustředné čtverce se stejnými vzrůstajícími hodnotami od nuly do (n-1) div 2.
Vím že asi musím naplnit vždy celou matici (bude to tak pro mě jednodušší než to plnit po obvodu) a pak každou další s n o jedna větší a o jedna kratší (1 to n - 1). Ale nevím jak to dostat do algoritmu,..

Za pomoc děkuji předem,..

Nahlásit jako SPAM
IP: 89.235.32.–
JoDiK
~ Anonymní uživatel
987 příspěvků
17. 5. 2013   #2
-
0
-

#1 Fifík
Do algoritmu to dostaneš tak, že si to zkusíš nejdřív ručně kreslit na papíře a budeš si zapisovat poznámky, kam a co jsi kreslil.

Až to budeš mít připravené, zapíšeš to do kódu.

Nahlásit jako SPAM
IP: 88.103.236.–
Fifík
~ Anonymní uživatel
3 příspěvky
17. 5. 2013   #3
-
0
-

To je právě bohužel věc, kterou nedokážu. Potřebuji tím předmětem jenom projít. Mám zcela jiné cíle a priority a programování přenechám těm, kdo to umí.

Nahlásit jako SPAM
IP: 89.235.32.–
Fifík
~ Anonymní uživatel
3 příspěvky
17. 5. 2013   #4
-
0
-

Zdá se, že jsem to rozlousknul. V konzoli to normálně funguje jak jsem potřeboval,.. 

Pokud by v tom kdokoli řemesla znalý viděl nějakou očividnou botu, určitě mi to napište.

procedure NaplnMatici (var M : Matice; n: Integer);
var
  i,j,pom,c  : Integer;
begin pom:=0; c:=1;
  repeat
  for i:=(1+c) to (n-c) do
   for j:=(1+c) to (n-c) do
    M[i,j]:= pom + 1; pom:=pom+1; c:=c+1;
   until c = n - 1 div 2;

end;

Nahlásit jako SPAM
IP: 89.235.32.–
Sniper
~ Anonymní uživatel
215 příspěvků
18. 5. 2013   #5
-
0
-

Osobně bych to namáznul asi takhle (stejnej postup, ale je to univerzálnější, vezme to v podstatě libovolnou velikost a i obdélníkový matice):

type
  TMatrix2Di = Array of Array of Integer;

procedure FillMatrix(var Matrix: TMatrix2Di);
var
  Row,Column: Integer;
  Offset:     Integer;
begin
For Offset := 0 to (Pred(Length(Matrix)) div 2) do
  For Row := (Low(Matrix) + Offset) to (High(Matrix) - Offset) do
    For Column := (Low(Matrix[Row]) + Offset) to (High(Matrix[Row]) - Offset) do
      Matrix[Row,Column] := Offset;
end;
Nahlásit jako SPAM
IP: 90.179.201.–
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

Obvod ctverce VB — založil Mike007

Metoda na vyplneni ctverce — založil Vavat9

Moderátoři diskuze

 

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