Ir para o conteúdo
AceJG95

Formula Resolvente

Mensagens Recomendadas

AceJG95

Olá a todos! Sou novo no fórum e um "aspirante a programador", este é o meu primeiro post e pensei que podia partilhar o meu programa que resolve equações do 2º grau. É um programa como muitos outros mas com um toque pessoal. Espero que gostem e que vos seja útil.

#include<cmath>  //função raiz quadrada(sprt)
#include<iostream>	   //funções cout(output de texto) e cin(receber dados)
#include<iomanip>	    //instrucão endl(mudar de linha)
#include<conio.h>	    //função getch(parar o programa)
#include<stdlib.h>	   //função system(utilizar funcionalidades do sistema operativo)
#include<windows.h> //função Sleep(suspender o programa)
using namespace std;
int main(){
   system("title Solver.cpp"); //Pôr o nome do prog na janela
   system("color 02");			  //Mudar a cor das letras para verde
   float a, b, c, res1, res2; //Declaração de variáveis
   cout << "ax^2+bx+c" << endl << "Introduza os coeficientes: " << endl << "\ta: "; cin >> a;
   cout << "\tb: "; cin >> b;
   cout << "\tc: "; cin >> c;
   res1 = (-b + sqrt((b*b)-(4*a*c)))/(2*a);
   res2 = (-b - sqrt((b*b)-(4*a*c)))/(2*a);
   if (a == 0 || (b*b)-(4*a*c) < 0){ //Mensagens de erro
       cout << endl << endl;
       system("color 04");
       Sleep(1000);
       if (a == 0){
           cout << "<ERROR>: a = 0!" << endl;
          		  Sleep(1500);
       }
       else{
           cout << "<ERROR>: Negative Root!" << endl;
           Sleep(1500);
       }
       cout << "<ERROR>: No Real Roots!" << endl;			   //Não é necessário ao programa mas
       Sleep(1500);																	 //acho que fica bem XD
       cout << "<ERROR>: Unexpected Situation!" << endl;
       Sleep(1500);
       cout << "<WARNING>: The program crashed" << endl;
       Sleep(1500);
       cout << "<WARNING>: System is shutting down.";
       Sleep(1000); cout << ".";
       Sleep(1000); cout << ".";
       Sleep(1000); cout << ".";
       Sleep(1000); cout << ".";
       Sleep(1000); cout << ".";
       Sleep(1000);
       return 0;
   }else if(res2 == -0){								    //Quando as soluções são iguais aparece uma cena do
       cout << "\t[x1 = " << res1 << "]x2" << endl; //género x1=y x2=-y, não convem
   }
   else
       cout << "\t[x1 = " << res1 << "]\t[x2 = " << res2 << "]" << endl;
   getch();
   return 0;
}

Dado às configurações do browser so posso publicar assim.

Editado por Baderous
geshi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ruirodrigues1971

Como eu gosto de ensinar ;)

1 - Primeiro tens de verificar as condições para o cálculo e só depois efectuar o respectivo cálculo ... ou seja

res1 = (-b + sqrt((b*b)-(4*a*c)))/(2*a);

res2 = (-b - sqrt((b*b)-(4*a*c)))/(2*a);

Tem de estar protegido por um if para ver se o a é zero e (b*b)-(4*a*c) > 0 senão o programa vai estourar :cheesygrin:

2 - Se a = 0 , cais na situação bx+c=0 que também terás de resolver :P

2. 1 - Se B=0, cais na situação c=0 ... depende do c se é ou não impossível a equação :P

Como adoro matemática e costumo dar este exemplo quando explico nas primeiras aulas de programação ... não resisti :cheesygrin:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
KTachyon

Representa a exponenciação.

ax2 + bx + c

Editado por KTachyon

“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

Tenho uma dúvida. Não sei para que serve o símbolo "^" entre o ax e o 2.

cout << "ax^2+bx+c"

Cumps

é texto, não faz nada a não ser representar o que o @KTachyon disse representar.

fazer, não faz nada por ser só texto


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Convidado

Tenho uma dúvida. Não sei para que serve o símbolo "^" entre o ax e o 2.

cout << "ax^2+bx+c"

Cumps

a*x*x + bx +c

Editado por Convidado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
KTachyon

(ax*ax) + bx +c

Errado:

a*x*x + b*x + c


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.