Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Existence trojuhelniku

Aktivity
Avatar
laney10
Člen
Avatar
laney10:17.10.2014 16:43

Ahojte,
Můžete mi napsat jestli to mám dobře popřípadě co mám špatně?

#include <iostream>
#include <math.h>
using namespace std;

double a,b,c,s,S;
int main()
{
cout << "Zadejte delky stran trojuhelniku" << endl;
cin >> a >> b >> c;
if(cin.fail()|| a <= 0 || b <= 0 || c <= 0)
    {
        cout << "Nespravny vstup" << endl;
        return 0;
        }
        if((a+b)>c && (a+c)>b && (b+c)>a)
            {
            cout << "Strany netvori trojuhelnik" << endl;
        }
        else
            {
                s = (a+b+c)/2; // obvod trujuhelniku
                S = (sqrt(s*(s-a)*(s-b)*(s-c))); // Obsah trojuhelniku
        cout << "Trojuhelnik existuje, obsah je: " << S << endl;
        }
    return 0;
}
 
Odpovědět
17.10.2014 16:43
Avatar
davaj
Člen
Avatar
davaj:18.10.2014 0:20

Proc pouzivas globalni promenne ? Snaz se je nepouzivat.
Jsi v C++, tak pouzivej novejsi knihovny math.h -> cmath.
Otevri ucebnici matematiky. Mas tam logickou chybu v podmince.
Program je napsan strasne. Zlepsi psani kodu.
Zbytecna zavorka v sqrt();
Pridal jsem cyklus, ktery si vyzada spravny zapis stran.

#include <iostream>
#include <cmath>
#include <cstdlib>
using namespace std;

int main()
{
    double a,b,c,s,S;
    cout << "Zadejte delky stran trojuhelniku" << endl;
    cin >> a >> b >> c;
    while((cin.fail()|| a <= 0 || b <= 0 || c <= 0)){
        cout << "Nespravny vstup" << endl;
        cout << "Zadejte delky stran trojuhelniku" << endl;
        cin >> a >> b >> c;
    }
    if((a+b)>c && (a+c)>b && (b+c)>a){
        s = (a+b+c)/2; // obvod trujuhelniku
        S = sqrt(s*(s-a)*(s-b)*(s-c)); // Obsah trojuhelniku
        cout << "Trojuhelnik existuje, obsah je: " << S << endl;
    }
    else
        cout << "Strany netvori trojuhelnik" << endl;
    system("PAUSE");
    return 0;
}
Editováno 18.10.2014 0:21
 
Nahoru Odpovědět
18.10.2014 0:20
Avatar
laney10
Člen
Avatar
Odpovídá na davaj
laney10:18.10.2014 7:35

Ještě jsem si s tím včera pohrál a funguje.

#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;

int main()
{
cout << "Zadejte delky stran trojuhelniku" << endl;
double a,b,c,s,S,obsah;
cin >> a >> b >> c;
while(cin.fail()|| a <= 0 || b <= 0 || c <= 0)
        {
        cout << "Nespravny vstup." << endl;
        return 0;
        }
        if((a+b<c) || (a+c<b) || (b+c<a) )
        {
            cout << "Strany netvori trojuhelnik." << endl;
            return 0;
        }
        else
            {
                s = (a+b+c)/2;
                S = (s * (s - a) * (s - b) * (s - c));
                obsah = sqrt(S);
                cout << fixed << setprecision(6) << "Trojuhelnik existuje, obsah je: " << obsah << endl;
        }
    return 0;
}
 
Nahoru Odpovědět
18.10.2014 7:35
Avatar
laney10
Člen
Avatar
Odpovídá na laney10
laney10:18.10.2014 8:03

Ten kód co jsi mi poslal - Když zadáš nečíselné hodnoty tak se spustí nekonečný cyklus.

 
Nahoru Odpovědět
18.10.2014 8:03
Avatar
davaj
Člen
Avatar
davaj:18.10.2014 11:55

Aha. Tak takhle je to vyreseno.

#include <iostream>
#include <cmath>
#include <cstdlib>
using namespace std;

int main()
{
    double a,b,c,s,S;
    cout << "Zadejte delky stran trojuhelniku" << endl;
    cin >> a >> b >> c;
    while((cin.fail()|| a <= 0 || b <= 0 || c <= 0)){
        system("CLS");
        cout << "Zadejte delky stran trojuhelniku" << endl;
        cout << "Nespravny vstup" << endl;
        cin.clear();
        cin.ignore();
        cin >> a >> b >> c;
    }
    if((a+b)>c && (a+c)>b && (b+c)>a){
        s = (a+b+c)/2; // obvod trujuhelniku
        S = sqrt(s*(s-a)*(s-b)*(s-c)); // Obsah trojuhelniku
        cout << "Trojuhelnik existuje, obsah je: " << S << endl;
    }
    else
        cout << "Strany netvori trojuhelnik" << endl;
    system("PAUSE");
    return 0;
}
 
Nahoru Odpovědět
18.10.2014 11:55
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.