Jump to content

Algoritms: Izvadīt trijstūra mediānas koordinātes


slamjaw

Recommended Posts

Sveiki forumieši!

 

Tad nu man ir uzdots patstāvīgais darbs uz C++. Es neprasu, lai Jūs uzrakstat man gatavu programmu, bet gan vēlos, lai Jūs palīdzētu man saprast uzdevuma izpildes agoritmu.

 

Tad nu uzdevums ir:

Doti trīs skaitļu trīnieki a, b un c. Katrs skaitļu trīnieks nosaka taisni, kas uzdota sekojosā veidā: ax+by=c.
Ja taisņu krustpunkti veido trīstūra virsotnes, tad izdrukāt sī trīstūra mediānu koordinātes.
Ja neveido, tad uzrādīt taisnes, kas ir paralēlas

 

Uz doto brīdi es varu atrast visu malu krustpunktu koordinātes (Izmantojot krāmera formulu ar divu lineāru vienādojumu sistēmu), un ja nepieciešams, arī sanāk izskaitļot katras malas garumu un mediānas garumu. Bet diemžēl man ir prasīts nevis mediānas garums, bet to koordinātes... Varbūt pieredzējušāki mani kolēģi varētu pateikt, ar kādu algoritmu varētu tikt pie mediānas koordinātēm?

 

P.S. uz ko norāda, ja pēc krāmera formulas, diskriminants (Delta) sanāk nulle... Cik saprotu, tas nozīmē, ka nav atrisinājuma, bet vai šajā gadījumā tas ir iespējams? Jo divas taisnes ir vai nu paralēlas, vai nu krustojas. Citas iespējas taču nav?

Edited by slamjaw
Link to post
Share on other sites

Ok. Par Krāmera formulām visu esmu aizmirsis, bet:

Taisne K ir || ar taisni J tad un tikai tad, ja

ak/bk=aj/bj

Šajā gadījumā tas iekļauj gadījumu, kad K sakrīt ar J.

 

Kad esi atradis virsotņu koordinātas, tad jāatrod malu viduspunktu koordinātas Xmax-(Xmax-Xmin)/2 (un tāpat Y koordinātai).

un jāizrēķina a'b'un c' vērtības tādai taisnei, kas iet caur šo punktu un tam pretī esošo virsotni...

 

P.S. Rakstīju, daudz neiedziļinoties, varbūt kādu grābekli esmu palaidis garām.

Link to post
Share on other sites

Īsti nesapratu, ko mēs dabūjam ar Xmax-(Xmax-Xmin)/2. Garākās malas vidus punktu koordinātas? Tāpat īsti nesapratu kā "izrēķināt a, b un c vērtības tādai taisnei... "

Atvainojos, ka esmu tāds bremze.... Vari pamēģināt pateikt kautkā savādāk?

Edited by slamjaw
Link to post
Share on other sites

Pieņemsim, ka mums ir mala AB, ar koordinātām (3,4)A un (5,1)B.

šīs malas viduspunkts tātad ir (5-(5-3)/2,4-(4-1)/2)=(4,2.5)

zinot, ka virsotnes C koordināta ir (7,3)

izrēķinām a, b un c vērtības taisnei, kas iet caur šiem diviem punktiem.

 

Tā atkārtojam atlikušajām divām malām un virsotnēm

Edited by Aleksejs
Link to post
Share on other sites

Nekādi algoritmi. Tikai ģeometrija. Taišņu krustpunktu atrast jau vari. Tas labi. Tālāk starp diviem punktiem atrast viduspunktu ir elementāri - vienkārši izvelc vidējo aritmētisko X koordinātēm un Y koordinātēm. Pēc tam vajag tikai atrast vienādojumu taisnei, kura iet caur diviem zināmiem punktiem (trijstūra virsotne, un pretējās malas viduspunkts). Tā arī ir elementāra algebra.

Link to post
Share on other sites

Liels paldies visiem, kas palīdzēja. Domāju, ka programma gatava. Uzzīmēju iespējamo variantu, izrēķināju, un programmas izvade sakrīt ar izrēķināto variantu. Pielikumā ielikšu cpp failu, ja gadījumā kādu kādreiz mocīs šis pats jautājums.

 

Anyway, ja kādam ir vairāk brīva laika, varētu pārbaudīt programmu, un varbūt kautko ieteikt?

 

P.S. Augšuplādētais fails ir .txt formātā, jo ar paplašinājumu .cpp man neļāva augšuplādēt. Vienkārši pārsauciet failu piemēram uz linear.cpp

linear.txt

Edited by slamjaw
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...