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, botów: 0