• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

sandro_G

A formula resolvente

10 mensagens neste tópico

Para quem quiser confirmar como anda a nível da formula resolvente já pode...

Deixo o código e o executável...Comentem..lol

# include <stdio.h>
# include <math.h>

int main()
{
float a;
float b;
float c;
float delta;
float x1;
float x2;
printf ("a=");
scanf ("%f",&a);
printf ("\nb=");
scanf ("%f",&b);
printf ("\nc=");
scanf ("%f",&c);
delta = (b*b) - 4*a*c;
if (a>0||a<0)
{
if (delta<0) printf ("\nEquacao impossivel, delta=%f",delta);
if (delta == 0) printf ("\nSo existe uma solucao. X=%f",(-b)/(2*a));
if (delta>0) printf ("\nAs solucoes sao X1=%f e X2=%f. Delta=%f",(-b + sqrt(delta))/(2*a),(-b - sqrt(delta))/(2*a),delta);
}
else printf ("Equacao do 1ºgrau.\nSolucao=%f", (-c/b));

return (0);
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Edita o teu post indentando o código com o GeSHi. :D

EDIT: Seria bom meteres um system("PAUSE") no fim antes do return para o utilizador visualizar o resultado. (Tens de adicionar a biblioteca stdlib.h...)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Edita o teu post indentando o código com o GeSHi. :D

EDIT: Seria bom meteres um system("PAUSE") no fm antes do return para o utilizador visualizar o resultado. (Tens de adicionar a biblioteca stdlib.h...)

Hipnoted explica sff qual a vantagem de fazer isso..É que do que tou a aprender ainda nao cheguei a essa parte...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hipnoted explica sff qual a vantagem de fazer isso..É que do que tou a aprender ainda nao cheguei a essa parte...

Da maneira que puseste o programa faz tudo. Não testei se os resultados das equações estão certos ou não mas isso não é o que interessa, em princípio está.

O que o system("PAUSE") faz é uma pausa para que o utilizador visualize o resultado porque assim como está sem o system("PAUSE") é feito muito depressa e o utilizador nunca chega a visualizar o resultado porque a janela fecha-se logo. Claro isto no Windows, e no DevC++ porque suponho que seja o que estás a utilizar.

PS: Já agora o ficheiro está gravado em ".cpp". Se é realmente C e não C++ devia estar em ".c"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hipnoted explica sff qual a vantagem de fazer isso..É que do que tou a aprender ainda nao cheguei a essa parte...

Da maneira que puseste o programa faz tudo. Não testei se os resultados das equações estão certos ou não mas isso não é o que interessa, em princípio está.

O que o system("PAUSE") faz é uma pausa para que o utilizador visualize o resultado porque assim como está sem o system("PAUSE") é feito muito depressa e o utilizador nunca chega a visualizar o resultado porque a janela fecha-se logo. Claro isto no Windows, e no DevC++ porque suponho que seja o que estás a utilizar.

PS: Já agora o ficheiro está gravado em ".cpp". Se é realmente C e não C++ devia estar em ".c"

Pois o compilador é o turbo4.5c++...Por isso é que nao necessito de "pauses" pk vejo tudo direito..Na minha opinião é o melhor compilador...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Só um reparo:

Não verificas se o valor de a é diferente de 0, se alguém testa o executável e põe a = 0, dá erro!

Sobre o system("PAUSE"), não uses. Isso retira a capacidade do teu programa ser multiplataforma.

Cumpr. bk@ero  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hipnoted explica sff qual a vantagem de fazer isso..É que do que tou a aprender ainda nao cheguei a essa parte...

Da maneira que puseste o programa faz tudo. Não testei se os resultados das equações estão certos ou não mas isso não é o que interessa, em princípio está.

O que o system("PAUSE") faz é uma pausa para que o utilizador visualize o resultado porque assim como está sem o system("PAUSE") é feito muito depressa e o utilizador nunca chega a visualizar o resultado porque a janela fecha-se logo. Claro isto no Windows, e no DevC++ porque suponho que seja o que estás a utilizar.

PS: Já agora o ficheiro está gravado em ".cpp". Se é realmente C e não C++ devia estar em ".c"

Pois o compilador é o turbo4.5c++...Por isso é que nao necessito de "pauses" pk vejo tudo direito..Na minha opinião é o melhor compilador...

gcc  :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Só um reparo:

Não verificas se o valor de a é diferente de 0, se alguém testa o executável e põe a = 0, dá erro!

Sobre o system("PAUSE"), não uses. Isso retira a capacidade do teu programa ser multiplataforma.

Cumpr. bk@ero  :P

Vou fazer a correcção..A partir do momento que a=0 deixamos de ter uma equação do 2ºgrau...Vou corrigir isso quando chegar ao estágio..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já alterei conforme tinha mencionado o brink@ero. Acho que agr está preparada para todas as situaçoes. Mas se descobrirem erros digam...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas, fórmulas resolvente.... é o que não falta por aqui no forum, nas diversas linguagens, como matemática que sou, fico muito contente...o bk@ero já tinha alertado para um erro, e muito bem! :thumbsup:

Deixo aqui uma versão melhorada e completa. Espero que te ajude, já que estás aprender!! Muito bom trabalho.... :)

# include <stdio.h>
# include <math.h>
# include <stdlib.h>
int main()
{
float a;
float b;
float c;
float delta;
float resultado;

printf("\n\n\tFormula resolvente para equacaes de 2 Grau -> ax^2+bx+c=0.");
   printf("\n\n\tInsira os dados!\n");
printf ("\nValor de a=");
scanf ("%f",&a);
printf ("\nValor de b=");
scanf ("%f",&b);
printf ("\nValor de c=");
scanf ("%f",&c);
system("Pause");
resultado=0;
if( a==0 )

{   resultado=-c/b;
       printf("\n\tEstamos perante uma equacao de 1 Grau: bx+c");
       printf("\n\tA solucao da equacao dada: %.2fx+%.2f=0 e %.2f" , b, c,  resultado );   
   }
   else
   {
      delta = (b*b) - 4*a*c;
      if(delta ==0)
      {     
            resultado=-b/(2*a);
            printf("\n\tA solucao da equacao dada: %.2fx^2+%.2fx+%.2f=0 e %.2f" , a,b, c, resultado );     
      }
      else
      {
          if(delta<0)
          {
              printf("\n\tA equacao dada: %.2fx^2+%.2fx+%.2f=0 nao tem soluções reais." , a,b, c ); 
              printf("\n\tEquacao impossivel em R.");
          }
          else // caso em que delta>0
          {
               resultado=( -b+sqrt(delta) )/ ( 2*a );
               printf("\n\tA equação dada: %.2fx^2+%.2fx+%.2f=0 tem duas soluções:" , a,b, c ); 
               printf("\n\t1 Solucao: %.2f",resultado);
               resultado=( -b-sqrt(delta) )/ ( 2*a );
               printf("\n\t2 Solucao: %.2f",resultado);
          }   
      }
   }
   printf("\n\n\n Prima um numero para sair.");
   float i;
scanf ("%f",&i);
return (0);
}

bom trabalho

tofas

Edit:

Encontrei um tópico posterior a este : http://www.portugal-a-programar.pt/index.php?showtopic=7267

Não analisei o código.... :)

0

Partilhar esta mensagem


Link 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