Obsah trojúhelníku – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Obsah trojúhelníku – C / C++ – Fórum – Programujte.comObsah trojúhelníku – C / C++ – Fórum – Programujte.com

 

DB
~ Anonymní uživatel
12 příspěvků
16. 10. 2013   #1
-
0
-

Zdravím, mám malý dotaz. Neví někdo náhodou jak napsat vzorec pro výpočet obsahu trojúhelníku, pokud znám všechny tři strany a, b, c ? Trošku si nevím rady :) . Předem díky.

Nahlásit jako SPAM
IP: 78.102.189.–
DB
~ Anonymní uživatel
12 příspěvků
16. 10. 2013   #2
-
0
-

#1 DB
s = (a+b+c)/(2);
    S = double (sqrt(double((s - a)*(s - b)*(s - c))));

tohle jsem vyplodil ale nevím zda-li je to 100% nejefektivnější řešení

Nahlásit jako SPAM
IP: 78.102.189.–
DB
~ Anonymní uživatel
12 příspěvků
16. 10. 2013   #3
-
0
-

#2 DB
tak vzorec jsme ještě poupravil :D

S = sqrt(s*(s - a)*(s - b)*(s - c));

Nahlásit jako SPAM
IP: 78.102.189.–
DB
~ Anonymní uživatel
12 příspěvků
16. 10. 2013   #4
-
0
-

#3 DB
Tak tohle jsme zplodil, nedalo by se to udělat ještě nějak efektivněji nebo si myslíte, že mi to projde ve škole ? :D

#include <iostream>
#include <cmath>

using namespace std;

int main() {

    double a = 0, b = 0, c = 0;
    double s = 0, S = 0;

    cout << "Zadejte delky stran:\n";
    cin >> a >> b >> c;

    if (!cin.good() || a<=0 || b<=0 || c<=0) {  
        cout << "Špatný vstup.\n";
        return 0;
    } //if (!cin.good() || a<=0 || b<=0 || c<=0)

    s = (a+b+c)/(2);
    S = sqrt(s*(s - a)*(s - b)*(s - c));

    if (S <= 0 || (a+b<c) || (a+c<b) || (b+c<a) ) {
        cout << "Trojuhelnik nelze sestrojit.\n";
        return 0;
    } //if (S <= 0 || (a+b<c) || (a+c<b) || (b+c<a) )
    else {
        cout << "Trojuhelnik lze sestrojit, obsah je: " << S << endl;
    } //else
    
return 0;

} //int main()

Nahlásit jako SPAM
IP: 78.102.189.–
Kenvelo+2
Super člen
17. 10. 2013   #5
-
0
-

#4 DB
Nebudu ti psát celý kód, ale našel sem to během 2 min na Googlu 

výpočet trojúhelníku c++, dokonce i s kontrolou. Chtít po někom aby ti napsal domácí úkol je přece hloupost nemyslíš ?    Btw: Nepochopil sem proč do poznámek píšeš znova testovací podmínku... Poznámky ti mají napovědět proč to tak je a co by to mělo dělat. Zbytečná Anarchie ;)

Nahlásit jako SPAM
IP: 89.177.211.–
Díky bohu, že počítače vymysleli muži. Kdyby to byly ženy, tak binární soustavu reprezentují jedničky, nuly a "možná"
Honzc0
Stálý člen
17. 10. 2013   #6
-
0
-

#4 DB
Jenom poznámka: (k matematické části programu)

Podmínku (trojúhelníková nerovnost) if ((a+b<c) || (a+c<b) || (b+c<a) ) { cout << "Trojuhelnik nelze sestrojit.\n";

je potřeba dát před výpočet obsahu trojúhelníka, jinak při jejím nesplnění ti program spadne právě při  výpočtu obsahu. Obsah je vždy větší než nula.
 

Nahlásit jako SPAM
IP: 93.181.78.–
vitamin+8
Grafoman
17. 10. 2013   #7
-
+1
-
Zajímavé

#5 Kenvelo
Presne tak:

if (!cin.good() || a<=0 || b<=0 || c<=0) { 
    cout << "Špatný vstup.\n"; 
    return 0; 
} //if (!cin.good() || a<=0 || b<=0 || c<=0)

Ten komentár je zbytočný a len znepriehľadňuje kód. Zmysel by dával ak by bolo telo podmienky tak veľké že by sa nezmestilo na monitor (používa sa to napr. pri namespace-och a veľkých switch-och) alebo pri neprehľadných vnorených blokoch. 

Nahlásit jako SPAM
IP: 195.28.77.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
DB
~ Anonymní uživatel
12 příspěvků
17. 10. 2013   #8
-
0
-

Nechtěl jsem po někom kód, pokud jsi si všiml tak jsem ho tu dal a chtěl jsem jenom připomínky k efektivnosti. A proto jsem tu dál svůj kód. Ok poznámky jsou přehnané ale každý má svůj styl, pro mně je to tak přehlednější :-) ale ok vezmu to jako kritiku, která není adekvátní tématu. Celkem mi komentář od Honzc přijde od věci, protože mi to stroj zhodnotil na 100%. Ale i tak díky všem za čas. Mějte se...

Nahlásit jako SPAM
IP: 78.102.189.–
Kenvelo+2
Super člen
17. 10. 2013   #9
-
0
-

#8 DB
Však sem ti hodil odkaz kde se můžeš kouknout kompletně na celý kód + si k tomu měl kontrolu. Ano každý má svůj styl, to ti neberu ale když se přece něco učím tak aspoň trošku důsledně. Zeptal ses jestli by si s tím prošel ve škole, mě by stačilo vidět ten komentář a vyhodil bych tě. =) Kdyby ses koukl co sem ti poslal přišel by si na to ještě dřív než ti to "Honzc" poradil. 

Nahlásit jako SPAM
IP: 89.177.211.–
Díky bohu, že počítače vymysleli muži. Kdyby to byly ženy, tak binární soustavu reprezentují jedničky, nuly a "možná"
Honzc0
Stálý člen
18. 10. 2013   #10
-
0
-

#8 DB
Můj komentář rozhodně není od věci. Stroj ti to může nakrásně zhodnotit na 100%, on totiž posuzuje pouze jestli tam nemáš syntaktické chyby, a to jaké hodnoty za a,b,c dosazuješ samozřejmě neví.

Ono stačí si do tvého programu dosatit např. a=1, b=2, c=10 a uvidíš jak ti to spadne na výpočtu S.

A ještě ke komentářům: Komentáře slouží ktomu, aby někdo jiný, který čte tvůj kód věděl co právě děláš. Když mu ovšem za podmínku do komentáře napíšeš tu samou podmínku, tak z toho určitě nebude moudřejší. Ovšem, kybys mu tam napsal, že se vyhodnotí, zda jsou např. všechny strany větší než nula, pak by to smysl mělo.

Nahlásit jako SPAM
IP: 93.181.78.–
DB
~ Anonymní uživatel
12 příspěvků
18. 10. 2013   #11
-
0
-

Tam jde právě o to, že ten stroj ověřuje i vstupy a výstupy :) (jen pro informaci jmenuje se progtest) a také efektivitu a všelijaké jiné kraviny. Kdo by řekl, že může být tak chytrý :) .

BTW.

Ono stačí si do tvého programu dosatit např. a=1, b=2, c=10 a uvidíš jak ti to spadne na výpočtu S.

Strany trojúhelníku splňují trojúhelníkové nerovnosti:

Součet dvou libovolných stran je vždy delší než strana třetí, neboli

a + b > c
.
.
.
Takže by to logicky nemělo jít ne? :)

Nahlásit jako SPAM
IP: 78.102.189.–
DB
~ Anonymní uživatel
12 příspěvků
18. 10. 2013   #12
-
0
-

Ale je asi ty komenty budu dělat jinak, protože takovou šikanu jsem nečekal.

Nahlásit jako SPAM
IP: 78.102.189.–
18. 10. 2013   #13
-
0
-

při a = 1, b =2 a c= 10 je a+b = 3. Podmínka a+b > c splněna není, proto ti tu ten příklad Honzc dal

hu

Nahlásit jako SPAM
IP: 195.178.67.–
DB
~ Anonymní uživatel
12 příspěvků
18. 10. 2013   #14
-
0
-

Vím co myslíš, ale já se musel držet zadání a v zadání stálo ukončit program, pokud trojúhelníková nerovnost není splněna. Pokud se špatně chápeme tak to kašlete, stejně už je tento př. za mnou.

Čaute.

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

Podobná vlákna

Výplň trojúhelníku v c — založil miklel

Uhly trojuhelniku — založil Bay

Pomoc s obsahem trojuhelníku — založil Mr.Joke

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ý