a mianowicie gdy zapisz
p=sqrt(d);
x=(-b-p)/(2*a);
x2=(-b+p)/(2*a);
podaje mi poprawne wyniki a gdy napisze
x=(-b-sqrt(d))/(2*a);
x2=(-b+sqrt(d))/(2*a);
to oszukuje czemu?
a mianowicie gdy zapisz
p=sqrt(d);
x=(-b-p)/(2*a);
x2=(-b+p)/(2*a);
podaje mi poprawne wyniki a gdy napisze
x=(-b-sqrt(d))/(2*a);
x2=(-b+sqrt(d))/(2*a);
to oszukuje czemu?
Jakiego typu jest np p,d, b i x i x2. Przy działaniach na zmiennych różnego typu działa niejawna konwersja. Poza tym arytmetyka zmiennoprzecinkowa. Dla nas oba zapisy są równoważne, ale kompilator może je inaczej zapisywać w kodzie wynikowym.
float
a cały kod wygada tak wiem ze bez sensu dwie pętle.
#include<iostream>
#include<conio.h>
#include<math.h>
#include<iomanip>
using namespace std;
main()
{
float a, b, c;
float x, x2, d, p;
cout<<"Równanie kwadratowe"<<endl;
cout<<"ax^2+bx+c=0\n";
cout<<"podaj a\n";
cin>>a;
cout<<"podaj b\n";
cin>>b;
cout<<"podaj c\n";
cin>>c;
cout<<fixed;
cout<<setprecision(2);
d=b*b-4*a*c; p=sqrt(d);
int n;
if(d<0)
{n=0;}
else
{if(d=0)
{n=1;}
else
{n=2;}
}
switch(n)
{
case 0:
cout<<"Brak rozwiązań delta mniejsza od zera";
break;
case 1:
x=-b/2*a;
cout<<"Delta równa zero, x wynosi ="<<x;
break;
case 2:
x=(-b-p)/(2*a);
x2=(-b+p)/(2*a);
cout <<"Delta wieksza od zera,\n x1 ="<<x<<endl<<"x2 ="<<x2;
break;
}
getch();
"przy delcie mniejszej od 0 nie ma trywialnych miejsc zerowych, ale one nadal są"- przepraszam ale nie rozumiem o co chodzi