C# týden C# týden
Pořádné programy s pořádnou klávesnicí zdarma. Více zde
Pouze tento týden sleva až 80 % na C# .NET

Diskuze: Výstup non

C a C++ C a C++ Výstup non American English version English version

Aktivity (1)
Avatar
Jan Michálek:9.10.2018 11:39

Zdravím,

ve škole mám za úkol napsat program, pro výpočet kvadratické rovnice. ax2+bx+c=0
Všechno mi funguje jak mám až na to, když zadám hodnoty do souřadnice a=1 b=3 c=5 tak na výstupu v kořenech mám non (což je logické když Diskriminant je -11) ale potřebuji při takovém výstupu mít na výstupu napsané Rovnice nema reseni v R. Snažím se to napsat do podmínek, ale stále i při Diskriminantu -11 se provedou obě dvě podmínky což vůbec nechápu.

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    cout << "Zadejte parametry:" << endl;
    //Vstup uzivatele
    double a,b,c;
    cin >> a >> b >> c;
    //Vypocet Diskriminantu
    double D;
    double x1, x2;
    D = (b*b)-(4*a*c);
    //Diskriminant nesmí byt mensi nez 0
    if (D<0)
        cout << "Rovnice nema reseni v R." << endl;
    // Diskriminant je vetsi nebo rovno nule
    else if (D>=0)
        // Vypocet kvadraticke rovnice
        x1 = ((-b-(sqrt(D)))/(2*a));
        x2 = ((-b+(sqrt(D)))/(2*a));
        // Vystup programu
        cout <<"Koren 1: " << x1 << endl;
        cout <<"Koren 2: " << x2 << endl;
    return 0;

Zkusil jsem: Googlit a hledat odpovědi, ale asi špatne hledám.

Odpovědět 9.10.2018 11:39
Nemá cenu nic programovat, pokud se to neprogramuje geniálně.
Avatar
Odpovídá na Jan Michálek
Jan Michálek:9.10.2018 11:46

Už jsem na to přišel, takže už nepotřebuji poradit :-) , ale pokud někdo zná lepší způsob řešení, tak jsem jedno "velké ucho", zde spíše "oko" :-D . Přeci jsem zatím jen student

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    cout << "Zadejte parametry:" << endl;
    //Vstup uzivatele
    double a,b,c;
    cin >> a >> b >> c;
    //Vypocet Diskriminantu
    double D;
    D = (b*b)-(4*a*c);
    //Diskriminant nesmí byt mensi nez 0
    if (D<0){
        cout << "Rovnice nema reseni v R." << endl;
    }
    if (D>=0){
        // Diskriminant je vetsi nebo rovno nule
        double x1, x2;
        // Vypocet kvadraticke rovnice
        x1 = ((-b-(sqrt(D)))/(2*a));
        x2 = ((-b+(sqrt(D)))/(2*a));
        // Vystup programu
        cout <<"Koren 1: " << x1 << endl;
        cout <<"Koren 2: " << x2 << endl;
    }
    return 0;
}
Akceptované řešení
+5 Zkušeností
Řešení problému
Nahoru Odpovědět 9.10.2018 11:46
Nemá cenu nic programovat, pokud se to neprogramuje geniálně.
Avatar
Odpovídá na Jan Michálek
Matúš Olejník:11.10.2018 8:28

Stačilo aby si to poriadne ozátvorkoval :D

if (D<0) {
    cout << "Rovnice nema reseni v R." << endl;
} else { // Diskriminant je vetsi nebo rovno nule
    // Vypocet kvadraticke rovnice
    x1 = ((-b-(sqrt(D)))/(2*a));
    x2 = ((-b+(sqrt(D)))/(2*a));
    // Vystup programu
    cout <<"Koren 1: " << x1 << endl;
    cout <<"Koren 2: " << x2 << endl;
}
Nahoru Odpovědět 11.10.2018 8:28
/* I am not sure why this works but it fixes the problem */
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 3 zpráv z 3.