Komplexní čísla – Delphi – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Komplexní čísla – Delphi – Fórum – Programujte.comKomplexní čísla – Delphi – Fórum – Programujte.com

 

Radek
~ Anonymní uživatel
133 příspěvků
22. 4. 2011   #1
-
0
-

Dobrý den, prosím o pomoc s tímto programem:

Sestavte proceduru pro výpočet součinu dvou komplexních čísel a použijte ji pro řešení následující úlohy: jsou dána tři komplexní čísla, vynásobte nejprve ta dvě čísla, která mají největší reálnou část, a potom ta dvě čísla, která mají nejmenší imaginární část.

Udělal jsem proceduru, doufám, že aspoň tu dobře, ale dál si nevím rady.

type Komplex

Procedure Soucin(A,B:Komplex;var C:Komplex);
begin
C.R:=A.R*B.R-A.I*B.I;
C.I:=A.R*B.I+A.I*B.R;
end;

begin
n:=3
for i:=1 to n do
begin

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

Asi je to trochu divně zadáno, možná tím zadavatel myslel "vynásobte nejprve ta dvě čísla, která mají větší reálnou část"...
Třeba by to bylo jednodušší říct obráceně:"zjistěte, které z těch tří čísel má nejmenší reálnou část a ta zbývající dvě vynásobte".
Takže prostě přečti ty tři čísla (asi do tří proměnných třeba c1, c2, c3) a třeba větvením najdi tu dvojici větších čísel (neřeším, když jsou stejný):



jestliže c1.re>c3.re a_zároveň c2.re>c3.re
tak Soucin(c1,c2,soucin_vetsich)
jinak
jestliže c1.re>c2.re a_zároveň c3.re>c2.re
tak Soucin(c1,c3,soucin_vetsich)
jinak Soucin(c2,c3,soucin_vetsich)


ta druhá část analogicky

Nahlásit jako SPAM
IP: 88.103.233.–
Radek
~ Anonymní uživatel
133 příspěvků
23. 4. 2011   #3
-
0
-

Já v tom moc neumím a musím udělat tenhle poslední program právě. Děkuji, že mi radíš. Chtěl bych tě poprosit, jestli by jsi mi to nezprovoznil..pořád nad tym přemýšlím..hledám po netu..jedinné co jsem dal dohromady je tohle, ale nevim jak to poskladat, nějak deklarovat ty proměnné. :(

type Komplex

Function re(Cislo:Komplex):real;
begin
Re:=Cislo.re;
end;

Function im(Cislo:Komplex):real;
begin
Im:=Cislo.im;
end;

Procedure soucin(A,B:Komplex;var V:Komplex);
begin
V.re:=A.re*B.re-A.im*B.im;
V.im:=A.re*B.im+A.im*B.re;
end;

var c1,c2,c3:Komplex;

begin
readln(c1);
readln(c2);
readln(c3);
if (c1.re>c3.re) and (c2.re>c3.re) then Soucin(c1,c2,soucin_vetsich);
else
if(c1.re>c2.re) and (c3.re>c2.re) then soucin(c1,c3,soucin_vetsich);
else soucin(c2,c3,soucin_vetsich);

if (c1.im<c3.im) and (c2.im<c3.im) then soucin(c1,c2,soucin_mensich);
else
if(c1.im<c2.im) and (c3.im<c2.im) then soucin(c1,c3,soucin_mensich);
else soucin(c2,c3,soucin_mensich);
writeln(V.im,V.re);

end.

Nahlásit jako SPAM
IP: 82.113.46.–
JoDiK
~ Anonymní uživatel
987 příspěvků
24. 4. 2011   #4
-
0
-

A to si jen tak píšeš, nebo to taky zkoušíš překládat, ladit a spouštět v nějakém IDE?

Chybí ti tam deklarace toho typu komplex a samozřejmě deklarace výstupních proměnných.

Funkce Re a Im máš deklarovány zbytečně, vždyť je tam nikde nepoužíváš...

Koukni se na typ záznam (record) a taky jak se u něj čtou a vypisují položky.

Nahlásit jako SPAM
IP: 88.100.43.–
Radek
~ Anonymní uživatel
133 příspěvků
24. 4. 2011   #5
-
0
-

No musím to odevzdat ve škole, abych dostal zápočet. Já tomu právě moc nerozumim. Mám to jen jeden semestr právě. Snažím se na to přijít, ale nejde mi to. Zadávám to do delphi a zkouším to zpouštět. Jako aby to byl funkční program.

Nahlásit jako SPAM
IP: 82.113.46.–
Radek
~ Anonymní uživatel
133 příspěvků
24. 4. 2011   #6
-
0
-

jo ty funkce by měli být asi takhle si myslim:

FUNCTION CastReal(r1,i1,r2,i2 :real):real;
Begin
CastReal:= (r1*r2)-(i1*i2);
End;

FUNCTION CastImag(r1,i1,r2,i2 :real):real;
Begin
CastImag:= (r1*i2)+(i1*r2);
End;

Nahlásit jako SPAM
IP: 82.113.46.–
Radek
~ Anonymní uživatel
133 příspěvků
24. 4. 2011   #7
-
0
-

a misto teho komplex, by mělo být real, to type komplex by tam asi nemelo byt a tam kde je komplex je real asi

Nahlásit jako SPAM
IP: 82.113.46.–
JoDiK
~ Anonymní uživatel
987 příspěvků
25. 4. 2011   #8
-
0
-

To Radek :
Když odhlédnu od toho, že na VŠ děláte ty samé příklady jako na SŠ, tak je trochu smutné, žes nepochopil princip.
Abys dostal zápočet a mohl jít dál, musíš tomu porozumět. Programování není kategorie typu: večer před zkouškou se to našrotím a pak to už můžu zapomenout...
Jestli to není tajný, co studuješ za školu? Seš si jistý, že programování máte jen jeden semestr a pak už k němu ani nečuchneš?

K tomu cos napsal, zatím všechno mimo.
Ty funkce opravdu nemají být tak, jak jsi napsal, to by zas byla úplně zbytečná procedura Soucin.

A místo teho komplex nemá být real, protože komplexní číslo má dvě položky, real jen jednu asi...

Přijde mi, žes to odněkud zkopíroval a ani nevíš co a jak to použít.

Takže ještě jednou:
Koukni se na typ záznam (record) a taky jak se u něj čtou a vypisují položky.

Doufám, že aspoň nějakou příručku, nebo skripta na to programování máš, pokud ne, na internetu to najdeš...

Nahlásit jako SPAM
IP: 88.100.43.–
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, 13 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ý