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. října 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. října 11:39
Nemá cenu nic programovat, pokud se to neprogramuje geniálně.
Avatar
Odpovídá na Jan Michálek
Jan Michálek:9. října 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. října 11:46
Nemá cenu nic programovat, pokud se to neprogramuje geniálně.
Avatar
Odpovídá na Jan Michálek
Matúš Olejník:11. října 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. října 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.