Jump to content

Ecuatie De Gradul 2 In Pseudocod


Courage
Go to solution Solved by Lus,

Recommended Posts

  • Moderators

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
Link to comment
Share on other sites

  • Solution

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

 

Link to comment
Share on other sites

#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?

head%20bash.gifVrei să vezi mai multe chestii interesante? Hai pe blogul meu, să vedem împreună cam cum mai e cu tehnologia în zilele noastre!

Link to comment
Share on other sites

    
cout<<"Introdu valoare pentru b";     
cin>>c;     

esti serios?

Nu înțeleg ironia.

Și @Alex, tot nu-mi dă.

 

L.E. Mulțam:)

Edited by Gabriel R.

head%20bash.gifVrei să vezi mai multe chestii interesante? Hai pe blogul meu, să vedem împreună cam cum mai e cu tehnologia în zilele noastre!

Link to comment
Share on other sites

  • Moderators

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;
}
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • 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.