Determinant matice pomocí procedury – Delphi – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Determinant matice pomocí procedury – Delphi – Fórum – Programujte.comDeterminant matice pomocí procedury – Delphi – Fórum – Programujte.com

 

MEIO0
Duch
30. 4. 2015   #1
-
0
-

Dobrý den, při procházení příkladů ke zkoušce jsem narazila na jeden, se kterým si vážně nevím rady. Jednou se tu řešil, ale nijak se nedořešil. "SESTAVTE PROCEDURU PRO VYPOCET HODNOTY DETERMINANTU DRUHEHO RADU A POUZIJTE JI PRO RESENI SOUSTAVY DVOU LINERARNICH ROVNIC O DVOU NEZNAMYCH. ZVOLTE DVE SOUSTAVY."

Není mi jasné, proč se determinant dle zadání musí počítat pomocí procedury, když výsledek je hodnota, nikoli činnost. Pokud by se přes fci vypočítal Determinant, stačilo by X a Y vypočítat jako (1/D)*D1...D1=A[1,3]*A[2,3]-A[21]*A[13]...D2 podobně jako D1 (poslední sloupec dát místo druhého sloupce). Jenže s tím si myslím, že by mě učitel vyrazil. Jde to udělat nějak obecně třeba i pro matice 5. řádu? Jediné co mě napadá, zadat do procedury,aby vždy ten poslední sloupec zaměnil s příslušným sloupcem na výpočet DETERMINANTU(D1,D2,D3). Je moje úvaha alespoň trochu správná? Moc děkuji za odpověď.

Nahlásit jako SPAM
IP: 62.204.245.–
JoDiK
~ Anonymní uživatel
987 příspěvků
30. 4. 2015   #2
-
+1
-
Zajímavé
TB +

#1 MEIO
Hodnota nebo činnost není rozhodující - to je spíš taková pomůcka pro začátečníky. Profíci si vyberou podle toho, jak ji pak chtejí použít. Například standardní Str je procedura, i když logicky by to mohla být spíš funkce. Navíc, pokud se to povolí, mohou být funkce volány i jako procedury - pokud zrovna nepotřebuješ ten výsledek, jen aby udělala to co má udělat (ano, i funkce dělají činnosti).

K tomu determinantu: je hezké, že uvažuješ o zobecňování, to si ale nech na jiné zadání, tady se drž toho, co se po tobě chce...

Determinant matic vyšších řádů se řeší různě, ten tvůj popis jsem nepochopil, ale tipuju, že asi nebude v pořádku...

Nahlásit jako SPAM
IP: 88.103.228.–
MEIO0
Duch
2. 5. 2015   #3
-
0
-

Děkuji za odpověď. Mohl by jste mi poradit prosím ještě s deklarací té procedury? 
 

program rovnice;

type mat=array [1..2,1..3]of real;
var A:mat;
    D:real;
    VSTUP,VYSTUP:text;

procedure det(A:mat;var D:real);
var A:mat;
begin
D:=A[1,1]*A[2,2]-A[1,2]*A[2,1];
end;

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

#3 MEIO
Poradil bych hlavně udělat si jasno v lokálních i globálních proměnných a parametrech podprogramů.

Máš tam třikrát použitý identifikátor A. Ne, že by to v případě globální proměnné nešlo, ale je to dost matoucí a ta lokální proměnná v proceduře už je špatně to ti neveme ani překladač.

Takže asi takhle:

procedure det(var A:mat;var D:real);
begin
  D:=A[1,1]*A[2,2]-A[1,2]*A[2,1];
end;

Pozn.: to, že matice předávaná parametrem do procedury, přestože je určena pouze pro vstup, je opravdu deklarovaná jako vstupně-výstupní, tak to je schválně, protože tím ušetříš paměť na zásobníku i čas při výpočtu, prostě si zvykni, že všechny větší struktury se do podprogramu předávají takto...

Nahlásit jako SPAM
IP: 88.103.228.–
MEIO0
Duch
2. 5. 2015   #5
-
0
-

#4 JoDiK
Tyjo díky moc :) procedury a funkce jsme probrali letem světem, takže se s tím trápím po večerech. Teď aspoň budu mít v ruce něco, s čím můžu za učitelem jít, ať mě nějak navede. Díky moc :)

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

 

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