Jump to content

Ecuatie De Gradul 2 In Pseudocod


Go to solution Solved by Lus,

Recommended Posts

  • Moderators
Posted

Am de făcut un algoritm pentru rezolvarea ecuaţiei de gradul II, dar nu ştiu dacă e bun. L-am transformat în C++, dar nu merge bine :(.

 real a, b, c, d, x1, x2, x
 citeşte a, b, c
┌dacă a=0 atunci
|    scrie "Este o ecuaţie de gradul I"
|   ┌dacă b=0 atunci
|   |   ┌dacă c=0 atunci
|   |   |    scrie "Ecuaţia are o infinitate de soluţii"
|   |   |altfel
|   |   |    scrie "Ecuaţia nu are soluţii reale"
|   |   └■
|   |altfel
|   |   ┌dacă c=0 atunci
|   |   |    scrie "soluţia este 0"
|   |   |altfel
|   |   |    x<- -c/b
|   |   |    scrie x
|   |   └■
|   └■
|altfel
|   ┌dacă b=0 atunci
|   |   ┌dacă c=0 atunci
|   |   |    scrie "soluţia este 0"
|   |   |altfel
|   |   |    x<-sqrt(c/b)
|   |   └■
|   |altfel
|   |   ┌dacă c=0 atunci
|   |   |    x1<-0
|   |   |    x2<- -b/a
|   |   |    scrie x1, x2
|   |   |altfel
|   |   |    d<-b*b-4*a*c  
|   |   |   ┌dacă d>0 atunci
|   |   |   |    x1 <- (-b-sqrt(d)) / (2*a)
|   |   |   |    x2 <- (-b+sqrt(d)) / (2*a)
|   |   |   |    scrie x1, x2
|   |   |   └■
|   |   |   ┌dacă d=0 atunci
|   |   |   |    x <- -b/(2*a)
|   |   |   |    scrie x
|   |   |   └■
|   |   |   ┌dacă d<0 atunci
|   |   |   |    scrie "Ecuaţia nu are soluţii reale"
|   |   |   └■
|   |   └■
|   └■
└■

În C++ l-am transformat aşa (am băgat acolade şi la if / else deoarece arăta un rahat de roare cu else / if (>.<)

 

#include <iostream>
#include <math.h>
using namespace std;
int main()
{
    float a,b,c,d,x1,x2,x;
    cout<<"a = ";
    cin>>a;
    cout<<"b = ";
    cin>>b;
    cout<<"c = ";
    cin>>c;
    if (a==0)
    {
        cout<<"Este o ecuatie de gradul I";
        if (b==0)
        {
            if (c==0)
            {
                cout<<"Ecuatie are o infinitate de solutii";
            }
            if (c!=0)
            {
                cout<<"Ecuatia nu are solutii";
            }

        }
        if (b!=0)
        {
            if (c==0)
            {
                cout<<"0";
            }
            if (c!=0)
            {
                x=-c/b;
                cout<<x;
            }
        }
    }
    if (a!=0)
    {

        if (b==0)
        {
            if (c==0)
            {
                cout<<"Singura solutie este 0";
            }
            if (c!=0)
            {
                x=sqrt(c/b);
                cout<<x;
            }
        }
        if (b!=0)
        {
            if (c==0)
            {
                x1=0;
                x2=-b/a;
                cout<<x1<<x2;
            }
            if (c!=0)
            {
                d=(b*b)-(4*a*c);
                if (d>0)
                {
                    x1=(-b-sqrt(d))/(2*a);
                    x2=(-b+sqrt(d))/(2*a);
                    cout<<x1;
                    cout<<x2;
                }
                if (d=0)
                {
                    x=-b/(2*a);
                    cout<<x;
                }
                if (d<0)
                {
                    cout<<"Ecuatia nu are solutii in multimea numerelor reale";
                }
            }
        }
    }
    return 0;
}
  • Upvote 1

  • Solution
Posted

Wut... ce-i asta? Cum adica daca c=0 atunci ecuatia are o infinitate de solutii? Cine te-a invatat asta? Ce legatura au ifurile alea acolo? Ai 2 solutii. Nu inteleg ce-ai facut tu acolo, algoritmul e mai simplu... trebuie sa verifici doar delta. Din moment ce iti cere pe ecuatie de gradul 2, a nu are cum sa fie 0, iar b si c sunt irelevante.

#include <iostream>
using namespace std;
int main()
{float a, b, c, d, x, x1, x2;
cin>>a>>b>>c;
d=b*b-4*a*c;
if(d<0) cout<<"ecuatia nu are solutii reale";
else if(d>0)
{x1= (-b+sqrt(d))/(2*a);
x2= (-b-sqrt(d))/(2*a);
cout<<x1<<" "<<x2;
}
else {x=-b/2*a;
cout<<x;}
}
Si cam asta e tot.
  • Upvote 1

fWy1P.gif

 

  • Moderators
Posted

Wut... ce-i asta? Cum adica daca c=0 atunci ecuatia are o infinitate de solutii?

Păi.. dacă avem 0*x^2 + 0*x + 0 = 0, ecuatia are o infinitate de solutii, deoarece orice viariabila am lua pentru X, aceasta va da 0.

Posted

Nu stiu cine te-a prostit, dar aia nu e ecuatie de gradul 2. Defapt, nu e nimic, e doar o ecuatie nedeterminata. Sau o fi ceva, prin facultate.

fWy1P.gif

 

Posted
#include <iostream.h>
#include <math.h>
using namespace std;
int main()
{
    float a, b, c, d=0, x1=0, x2=0;
    cout<<"Introdu valoare pentru a";
    cin>>a;
    cout<<"Introdu valoare pentru b";
    cin>>c;
    cout<<"Introdu valoare pentru c";
    cin>>c;
    d=b*b-4*a*c;
    if (d>=0){
        x1=(-b+ sqrt(d))/ 2*a;
        x2=(-b- sqrt(d))/2*a;}
    else
        cout<<"Ecuatia nu are solutii";
    cout<<x1<<endl;
    cout<<x2;
    return 0;
}

Ce nu e corect?

  • Moderators
Posted

x1=(-b+ sqrt(d))/ 2*a;
x2=(-b- sqrt(d))/2*a;}

trebe

 

x1=(-b+ sqrt(d))/(2*a);
x2=(-b- sqrt(d))/(2*a);}

Si ai pus cin>>c; de 2 ori.

Posted

eh nu tre sa faca neaparat caz special pt d=0, oricum solutiile vor fi egale.. daca e sa luam la puricat, trebuia sa si verifica ca ceea ce citeste sa fie valid, sa nu cumva sa fie caracter sau cine stie ce. 

love is a verb
Love is a doing word

  • Moderators
Posted

Aleluia, merge.

#include <iostream>
#include <math.h>
using namespace std;
int main()
{
    float a,b,c,x,x1,x2,d;
    cout<<"a=";
    cin>>a;
    cout<<"b=";
    cin>>b;
    cout<<"c=";
    cin>>c;
    if (a==0)
    {
        if (b==0)
        {
            if (c==0)
            {
                cout<<"Nu se poate ca c sa fie 0";
            }
            if (c!=0)
            {
                cout<<"Ecuatia nu are solutii";
            }
        }
        if (b!=0)
        {
            if (c==0)
            {
                cout<<"x=0";
            }
            if (c!=0)
            {
                x=(-1)*(c/b);
                cout<<x;
            }
        }
    }
    if (a!=0)
    {
        if (b==0)
        {
            if (c==0)
            {
                cout<<"x=0";
            }
            if (c!=0)
            {
                x=sqrt(c/a);
            }
        }
        if (b!=0)
        {
            if (c==0)
            {
                x1=0;
                x2=-b/a;
                cout<<x1<<" si "<<x2;
            }
            if (c!=0)
            {
                d=b*b-4*a*c;
                if (d>0);
                {
                    x1=(-b+sqrt(d))/(2*a);
                    x2=(-b-sqrt(d))/(2*a);
                    cout<<x1<<" si "<<x2;
                }
                if (d==0)
                {
                    x=-b/(2*a);
                    cout<<x;
                }
                if (d<0)
                {
                    cout<<"Ecuatia nu are solutii reale";
                }
            }
        }
    }
    return 0;
}

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.