Dentre elas, o seguinte desafio:
Escreva um programa na linguagem C que pede os coeficientes de uma equação do segundo grau e exibe as raízes da equação, sejam elas reais ou complexas.
Esse programa exige uma complexidade maior. Mas explicaremos tudo aqui, passo-a-passo.
Clique aqui e saiba como obter seu certificado de programação C! Entre já no Mercado de Trabalho!
Aplicativo em C que resolve uma equação do segundo grau
Passo 1:
A primeira parte do programa recebe os três coeficientes da equação, que são 'a', 'b' e 'c' e serão representados pelo tipo float.
Passo 2:
Uma equação do 2o grau só é válida se 'a' for diferente de 0, então, se for igual a 0 o programa deverá terminar.
Ou seja, nosso programa irá acontece dentro do 'if' que checa que 'a' é diferente de 0.
Passo 3:
Determinando o valor de delta: delta = b² - 4ac
Determinando a raiz quadrada de delta: sqrtdelta = sqrt(delta);
Onde sqrt significa 'square root', ou raiz quadrada, em inglês.
Em C, calculamos a raiz quadrada do número x usando a função sqrt(), que está na biblioteca math.h. Logo, precisamos importar essa biblioteca no começo do programa.
Passo 4:
Se delta for maior ou igual a zero, as raízes são dadas por:
raiz1 = (-b + sqrtdelta) / 2a
raiz2 = (-b - sqrtdelta) / 2a
Passo 5:
Se delta for menor que zero, suas raízes serão complexas e as raízes serão da forma:
raiz1 = (-b + i.sqrt(-delta) )/2a
raiz2 = (-b - i.sqrt(-delta) )/2a
Formatei a saída da seguinte forma, para ficar mais legível, que é a mesma coisa das equações anteriores:
raiz1 = (-b)/2a + i.sqrt(-delta)/2a
raiz2 = (-b)/2a - i.sqrt(-delta)/2a
Assim, chegamos ao resultado final de nosso programa em C:
14 comentários:
Otimo tutorial, me ajudou bastante.
Obrigado a todos!
Otimo conteudo. Me ajudou bastante. Obrigado a todos!
E tem um programa q faca o inverso: vc digita as raizes e o programa lhe mostra a equacao correspondente?
Muito bom o tutorial. Desculpe, mas uma coisa ficou um pouco confusa: no 5º passo, oque significa o i?
"
raiz1 = (-b)/2a + i.sqrt(-delta)/2a
raiz2 = (-b)/2a - i.sqrt(-delta)/2a"
Uma explicação importante que está faltando é o pow(a,b) para elevar o número ao quadrado.
i significa raiz de -1. É a unidade imaginária, ela determina se um número é real ou complexo. Isso é matemática do 2º ~ 3º ano do ensino médio.
Podem me ajudar por favor?
Meu compilador esta dando este erro:
~/Área de Trabalho/programas/exercicios_if else $ cc equaçao_resolvido.c -o equaçao_resolvido
/tmp/ccMJgEn8.o: na função `main':
equaçao_resolvido.c:(.text+0xd4): referência indefinida a `sqrt'
equaçao_resolvido.c:(.text+0x187): referência indefinida a `sqrt'
collect2: error: ld returned 1 exit status
Ja tinha feito o exercicio e a funçao sqrt nao é aceite pelo compilador, entao eu peguei o problema resolvido e colei chapado e continua com o mesmo erro!!!
na hora de executar ele fecha , por que?
Tenho alguns exercícios de equações para resolver em C e não achei mais nada a respeito além da sua explicação aqui e fiquei com uma dúvida, essa fórmula que você apresentou:
raiz1 = (-b)/2a + i.sqrt(-delta)/2a
raiz2 = (-b)/2a - i.sqrt(-delta)/2a
Ela também serve para os exercícios no papel ou é utilizado somente para o programa ?
No caso do numero imaginario "i". como ele fica no programa? atribuo algum valor ? o C não entende o i como numero imaginario né ? Ou não precisa por o "i" no programa ? serviria apenas para indicar que é raiz complexa ?
Ótimo curso, Parabéns a toda equipe do Prog. Progressiva !
boa noite estou com uma duvida e preciso saber qual codigo em c# para esse exercicio
a) Leia três valores inteiros. Calcule e exiba a equação do 2º grau, obedecendo as regras da matemática.
A não pode ser zero;
Delta não pode ser negativo;
Se delta for zero as duas raízes serão iguais.
Sobre a questão 0, fiz assim:
#include
#include
int main(){
setlocale(LC_ALL,"Portuguese");
int x,h;
printf("Digite um número: ");
scanf("%d",&x);
printf("Digite o segundo número: ");
scanf("%d",&h);
if(x==h){
printf("São iguais, por isso não satisfaz à questão\n");}
if (x>h){
printf("O valor de x= %d é maior do que h= %d.\n",x,h);}
if(x
#include
int main(){
setlocale(LC_ALL,"Portuguese");
int x,h;
printf("Digite um número: ");
scanf("%d",&x);
printf("Digite o segundo número: ");
scanf("%d",&h);
if (x>h){
printf("O valor de x= %d é maior do que h= %d.\n",x,h);}
else
if(x<h){
printf("O valor de x= %d é menor do que h= %d.\n",x,h);}
else
if(x==h){
printf("São iguais, por isso não satisfaz à questão\n");}
system("pause");
return 0;}
Boa noite senhores ...
O enunciado ficou confuso e incompleto.
Não seria melhor: " Faça um programa que peça e mostre os coeficientes de uma equação do 2º grau e que em seguida resolva está equação. ???
Fiz deste jeito, deu os resultados das raízes:
#include
#include
int main()
{
float a, //declarando os coeficientes da equação de segundo grau
b,
c,
delta,
y,
x;
int quatro=4,
dois=2;
printf("Digite os coeficientes da equação de segundo grau que daremos as raízes: ");
scanf ("%f %f %f",&a,&b,&c);
//valor do dricriminante
delta = ((b)*(b) - (quatro)*(a)*(c));
if (delta>=0)
{
x=((-b)-(sqrt(delta)))/((dois)*(a));
y=((-b)+(sqrt(delta)))/((dois)*(a));
printf("O valor das raízes são %.2f e %.2f", x,y);
}
else
if(delta<0)
{
printf("Não há como encontrar raízes, pois o valor do discriminate é negativo");
}
}
Postar um comentário