Sirka pasma matice – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Sirka pasma matice – Pascal – Fórum – Programujte.comSirka pasma matice – Pascal – Fórum – Programujte.com

 

Johnny
~ Anonymní uživatel
23 příspěvků
17. 6. 2013   #1
-
0
-

Ahoj, chtel bych vas poprosit o radu, mam vygenerovat matici 20x20 pomoci vzorce round(viz v kodu),toto mam hotove i s vypsanim matice, ale potrebuju zjistit sirku pasma matice(Šířka pásme je maximální vzdálenost dvou nenulových prvků (přes řádky nebo přes sloupce)), ale nevim jak to zapsat, dekuji za jakoukoli radu  

var
  Application: TMyApplication;
  mat:array[1..20,1..20] of real;
  i,j,pasmo:integer;
begin
  for i:=1 to 20 do begin
      for j:=1 to 20 do
      mat[i,j]:=round(sin(i+j)-cos(i));
      end;
  for i:=1 to 20 do begin
      for j:=1 to 20 do
          write(mat[i,j]:3:0);
          writeln;
          end;
  pasmo:=0;
          for i:=1 to 20 do begin
              for j:=1 to 20 do
                  if (mat[i+1,j]>0) and (mat[i-1,j]>0) and (mat[i,j-1]>0) and (mat[i,j+1]>0) then
                 pasmo:=pasmo+1;
          end;
          write('sirka pasma je:',pasmo);
   readln;
end.

Nahlásit jako SPAM
IP: 90.181.183.–
Johnny
~ Anonymní uživatel
23 příspěvků
17. 6. 2013   #2
-
0
-

#1 Johnny
doplneni: sirka pasma je maximalni vzdalenost nenuloveho prvku od diagonaly, diagonalni matice ma sirku pasma 1

děkuji za rady

Nahlásit jako SPAM
IP: 90.181.183.–
Mircosoft+1
Věrný člen
18. 6. 2013   #3
-
0
-

Chápu dobře, že se vzdálenost od diagonály počítá takhle?

1 2 3 4 5
2 1 2 3 4
3 2 1 2 3
4 3 2 1 2
5 4 3 2 1

Tenhle čtverec jsem vygeneroval vzorcem vzdálenost(i,j)=abs(i-j)+1. Ten můžeš pustit na každý prvek zkoumané matice a při kombinaci nenulového prvku a největší dosud dosažené vzdálenosti si tu vzdálenost uložit. Jednoduché, ale z hlediska rychlosti ne zrovna optimální.

Rychlejší by bylo procházet matici od nejvzdálenějších prvků k nejbližším (ideálně stylem cikcak: 554444333333...) a při nalezení první nenulové hodnoty uložit aktuální vzdálenost a skončit.

Nahlásit jako SPAM
IP: 212.118.224.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
kriplozoik
~ Anonymní uživatel
16 příspěvků
19. 6. 2013   #4
-
0
-

a co takto...?

 A není to takhle?...

for i:=1 to 20 do
  if mat[i,1]=0 then
    break;
SirkaMatice:=(i-1)*2+1;
Nahlásit jako SPAM
IP: 213.151.77.–
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, 7 hostů

Podobná vlákna

šířka — založil froo+

šířka selekce v px — založil Petroff

Sirka tabulky — založil Ondřej Šplíchal

100% šířka — založil Ondra

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ý