Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Dark_Subnumber

Meu primeiro programa, resolução de equação de segundo grau

Recommended Posts

Boa noite(se for noite pra você,), sou novo aqui no fórum, tenho 15 anos e iniciei em C hoje. Gostaria da opinião de vocês sobre esse código que acabei de fazer(2 e meia da manhã em ponto agora, sério), foi meu primeiro programa "de verdade":

 

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

int main(){
int u; 
float x, a, b, c, delta, x1, x2;
printf("Digite os valores para a, b e c respectivamente: ");
scanf("%f %f %f", &a, &b, &c);
printf("Sua equacao: %fx + %fx + %f = 0 ", a, b, c);
delta = b*(B) + (-4)*(a)*(c);
x1 = ((-B) + sqrt(delta))/(2*(a));
x2 = ((-B) - sqrt(delta))/(2*(a));
puts("\n\nSolucoes da equacao: ");

printf("\nSolucao de \"X1\": %.1f ", x1);
printf("\n\nSolucao de \"X2\": %.1f ", x2);
scanf("%d", &u);

return(0);

}

 

O "B" é minúsculo, por algum motivo saiu maiúsculo, mas é "b". Case sensitive é f***.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sendo um pouco purista: você esqueceu de tratar os valores de delta dentro da raiz.

Se você quiser um programa que calcule apenas as raízes reais, então deve considerar delta >= 0. Se você fornecer a=1, b=1 e c=2, as duas raízes aqui no meu terminal são -nan.

 

A linguagem C possui um header p/ trabalhar com números complexos, caso em que delta < 0. Alterei o seu código p/ usar isso:

 

/*
* Calcula as raízes de uma equação de segundo grau. 
*/
#include <stdio.h>
#include <complex.h>

int main(){
   	float  a, b, c, delta;
   	complex x1, x2;

   	printf("Digite os valores para a, b e c respectivamente: ");
   	scanf("%f %f %f", &a, &b, &c);
   	printf("Sua equacao: %fx^2 + %fx + %f = 0\n", a, b, c);

   	delta = b*(B) + (-4)*(a)*(c);


   	x1 = ((-B) + csqrt((complex) delta))/(2*a);
   	x2 = ((-B) - csqrt((complex) delta))/(2*a);

   	puts("\n\nSolucoes da equacao: ");

   	printf("\nSolucao de \"X1\": %.1f%+.1fi", creal(x1), cimag(x1));
   	printf("\n\nSolucao de \"X2\": %.1f%+.1fi\n", creal(x2), cimag(x2));

   	return(0);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.