• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Programowanie C++ (DELTA)

Object Storage Arubacloud
0 głosów
10,846 wizyt
pytanie zadane 12 marca 2017 w C i C++ przez kori09 Nowicjusz (240 p.)

Siemka, na lekcji robiliśmy deltę ale nasz nauczyciel troszkę nie ogarnia tego programowania więc zgłaszam się tutaj , pojawia mi sie problem ze else to drugie jest bez poprzedzającego go if oraz nie wiem jak to zrobić że jeśli delta będzie <0 to delta wraz inna , pomocy

 

#include <iostream>
#include <cmath>
using namespace std;
double a,b,c,x1,x2,delta;
main()
{
cout<<"Podaj a,b i c";
cin>>a>>b>>c;
if(a==0)
cout<<"To nie jest rownanie kwadratowe";
else
delta=(b*b)-4*a*c;
if(delta==0)
x1=-b/(2*a);
cout<<"x1= "<<endl;
else
{
x1=(-b-sqrt(delta))/(2*a);
x2=(-b+sqrt(delta))/(2*a);
cout<<"x1="<<x1<<"x2= "<<x2;
}


return 0;
}

 

1
komentarz 12 marca 2017 przez erx700 Gaduła (3,430 p.)
Jak już to wyróżnik trójmianu. Delta to tylko litera grecka.

Przy ifie nie ma klamer.
komentarz 12 marca 2017 przez kori09 Nowicjusz (240 p.)
Wychodzi x1=nanx2= nan ? dlaczego tak ?
komentarz 12 marca 2017 przez mokrowski Mędrzec (155,460 p.)
Dzięki że zwróciłeś uwagę. No właśnie, co z deltą ujemną?
komentarz 12 marca 2017 przez kori09 Nowicjusz (240 p.)
#include <iostream>
#include <cmath>
using namespace std;
double a,b,c,x1,x2,delta;
main()
{
cout<<"Podaj a,b i c"<<endl<<endl<<endl;
cin>>a>>b>>c;
if(a==0)
{
cout<<"To nie jest rownanie kwadratowe";
}
else
{
delta=(b*b)-(4*a*c);
if(delta==0)
{
x1=-b/(2*a);
cout<<"Miejsce zerowe wynosi: "<<x1;
}
else
{
	if(delta>0)
	{
x1=(-b-sqrt(delta))/(2*a);
x2=(-b+sqrt(delta))/(2*a);
cout<<"x1= "<<x1<<endl<<"x2= "<<x2;
	}
	else
	cout<<"Funkcja nie ma miejsc zerowych";
}

}
return 0;
}

 

2 odpowiedzi

+1 głos
odpowiedź 12 marca 2017 przez Filius Gaduła (4,120 p.)
wybrane 12 marca 2017 przez kori09
 
Najlepsza

1. przy if-ie nie było klamer więc wykonywał tylko pierwszą linijke po if-ie

2. troche uprzątnąłem kod np przy warunku kiedy delta = 0 nie wypisywałeś wartości x1 na ekran tylko napis x1=

3. dostajesz x1=nan ponieważ delta wychodzi ujemna a funkcja sqrt nie wyciągnie wartości z wartości ujemnej

musisz dodać jeszcze jednego if'a jeśli delta < 0 wypisz np pierwiastki zespolone z "i"



#include <iostream>
#include <math.h>

using namespace std;
double a, b, c, x1, x2, delta;
int main()
{
	cout << "Podaj a,b i c" << endl;
	cin >> a >> b >> c;
	if (a == 0)
		cout << "To nie jest rownanie kwadratowe";
	else
		delta = (b*b) - 4 * a*c;
	if (delta == 0)
	{
		x1 = -b / (2 * a);
		cout << "x1= " << x1 << endl;
	}
	else
	{
		x1 = (-b - sqrt(delta)) / (2 * a);
		x2 = (-b + sqrt(delta)) / (2 * a);
		cout << "x1=" << x1 <<endl<< "x2= " << x2;
	}

	system("pause");
	return 0;
}

 

+1 głos
odpowiedź 12 marca 2017 przez niezalogowany

W kodzie sprawdzane jest czy wyróżnik == 0. Możesz dodać dodatkowe instrukcje sprawdzające > i <:

#include <iostream>
#include <cmath>
using namespace std;
double a,b,c,x1,x2,delta;
main()
{
cout<<"Podaj a,b i c";
cin>>a>>b>>c;
if(a==0)
cout<<"To nie jest rownanie kwadratowe";
else
delta=(b*b)-4*a*c;
if(delta==0)
{
x1=-b/(2*a);
cout<<"x1= "<<endl;
}
else
{
if(delta>0)
{
x1=(-b-sqrt(delta))/(2*a);
x2=(-b+sqrt(delta))/(2*a);
cout<<"x1="<<x1<<"x2= "<<x2;
}
else cout<<"Brak rozwiazan";
}
 
return 0;
}

Natomiast zdecydowanie ładniej i przejrzyściej byłoby z instrukcjami else if i po uporządkowaniu kodu (trochę spacji i tabulacji):

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

int main()
{
    double a, b, c;
    cout << "Podaj a, b i c: ";
    cin >> a >> b >> c;

    if(a==0)
    {
        cout<<"To nie jest rownanie kwadratowe";
    }
    else
    {
        double delta = b*b-4*a*c;
        double x1, x2;

        if( delta > 0 )
        {
            x1=(-b-sqrt(delta))/(2*a);
            x2=(-b+sqrt(delta))/(2*a);
            cout<<"x1 = "<<x1<<"\n";
            cout<<"x2 = "<<x2;
        }

        else if(delta==0)
        {
            x1=-b/(2*a);
            cout<<"x0 = "<<x1;
        }

        else // delta < 0
        {
            cout<<"Brak rozwiazan";
        }
    }
    cout<<endl;

    return 0;
}

 

komentarz 12 marca 2017 przez kori09 Nowicjusz (240 p.)
Okej dziękuje bardzo za pomoc !

Podobne pytania

0 głosów
1 odpowiedź 408 wizyt
pytanie zadane 19 czerwca 2017 w C i C++ przez pecet00 Nowicjusz (180 p.)
+1 głos
2 odpowiedzi 3,933 wizyt
pytanie zadane 7 listopada 2017 w JavaScript przez Ferik Nowicjusz (240 p.)
–1 głos
1 odpowiedź 786 wizyt
pytanie zadane 11 listopada 2018 w C i C++ przez matiibal Użytkownik (620 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...