Ir ao conteúdo

Posts recomendados

Postado

Faça um algoritmo que leia 3 valores a, b e c, coeficientes de uma equação de segundo grau, e calcule e escreva a soma das raízes da equação. Dica:As raízes de uma equação podem ser calculadas pela fórmula de Baskhara.

 

Qual seria meu erro em meu programa? Ele da erro na linha 8 

 

 

#include <stdio.h>
#include <math.h>
int main()
{
float a,b,c,raiz1,raiz2,soma;
printf ("Digita, nesta ordem, os valores A, B e C");
scanf ("%f%f%f",&a,&b,&c);
raiz1=(-b+sqrt(pow(b,2)-(4*a*c)))/(2*a);
raiz2=(-b-sqrt(pow(b,2)-(4*a*c)))/(2*a);
soma=(raiz1+raiz2);
printf ("A soma das raízes da equação é: %f",soma);
}

Postado

@Erlon Fabbro Lembre que existem 3 casos: delta > 0, delta < 0, e delta = 0.

Para delta > 0, raízes reais são obtidas.

Para delta = 0, as raízes são reais e iguais.

Para delta < 0, ambas as raízes são complexas.

Somar raízes reais é tranquilo. Mas lembre que a soma de um número natural com um complexo será um complexo, assim como a soma de complexos.

Tome isso como exemplo:

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

main()
{
    
    float a, b, c, x1, x2, delta, soma;
    
    printf("Digite os valores de a, b e c:\n");
    scanf("%f%f%f", &a, &b, &c);
    
    delta = (pow(b, 2)-(4*a*c));
    
    if(delta >= 0)
    {
        if(delta == 0)
        {
            x1 = ((-b)/2*a);
            x2 = ((-b)/2*a);
            printf("A raiz x1 = %f", x1);
            printf("\nA raiz x2 = %f", x2);
            soma = x1 + x2;
            printf("\nA soma das raízes é: %f", soma);
        }
        else
        {
            x1 = ((-b+sqrt(delta))/2*a);
            x2 = ((-b-sqrt(delta))/2*a);
            printf("A raiz x1 = %f", x1);
            printf("\nA raiz x2 = %f", x2);
            soma = x1 + x2;
            printf("\nA soma das raízes é: %f", soma);
        }
    }
    else
    {
        delta = fabs(delta);
        x1 = ((-b+sqrt(delta))/2*a);
        x2 = ((-b-sqrt(delta))/2*a);
        printf("A raiz x1 = %fi", x1);
        printf("\nA raiz x2 = %fi", x2);
        soma = x1 + x2;
        printf("\nA soma das raízes é: %fi", soma);
    }
    return 0;
}

Seu programa funciona para delta >=0, mas não para delta <0.

  • Curtir 1
Postado

@Erlon Fabbro Existem 3 casos, então logicamente teriam que ser usadas condições, mas se seu programa é apenas para raízes reais, então ta tudo certo. No meu compilador funcionou, aparentemente não tem nada errado.

Teste e comprove:

a = 1, b = 0, c = -25 (delta > 0)

a = 1, b = -10, c = 25 (delta = 0)

Lembre-se de comentar seu programa, assim todos podem entender o que se passa nele. Identação também é importante.

  • Curtir 1
Postado
1 hora atrás, Luís Roberto C. da Silva disse:

Você tem que ler individualmente cada variável.

 

🤔 não tem não. scanf() foi escrita para ler entrada formatada --- daí o nome --- você pode ler um arbitrário número de valores. E não tem esse concceito de linha. Apenas de máscara, o primeiro parâmetro

 

1 hora atrás, Erlon Fabbro disse:

@Lucca Rodrigues Obrigado pela explicação, porém neste exercício não poderiamos usar o "if, else", pois o professor ainda não tinha explicado. Porém sua explicação foi muito útil para mim, grato

 

Você está certo de que seu professor reforça essa ideia? É uma ideia besta. Você tem um livro texto ou uma apostila? Entendo não poder usar funções prontas, como as de biblioteca, porque muitas vezes a solução pedida já está na biblioteca, mas comandos da linguagem? Não tem sentido. É como aprender uma linguagem sem poder falar as palavras novas que você ouve, até sua mãe te ensinar alguma "oficialmente"

 

Por falar em funções, porque pow(b,2)? Não gosta de b*b?

 

Seu programa está bom

 

 

 

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!