pytanie prog wyliczajacy równanie kwadratowe początkujący/

0

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?

0

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.

0

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(); 
0

"przy delcie mniejszej od 0 nie ma trywialnych miejsc zerowych, ale one nadal są"- przepraszam ale nie rozumiem o co chodzi

1 użytkowników online, w tym zalogowanych: 0, gości: 1