Ir para conteúdo

Arquivado

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

Cristhian Souza

Equação do segundo grau

Recommended Posts

Escrever um programa C que solicite ao usuário a digitação dos coeficientes

de uma equação do segundo grau (ax² + bx + c = 0) e que calcule e retorne as raízes

reais da equação. Observe que uma equac~ao do 2º grau pode ter duas, uma ou nenhuma

raiz real, dependendo do valor de Δ, onde Δ = b² - 4ac.


Código:




#include <stdio.h>
#include <math.h>
int main()
{
int a, b, c;
float bask2, bask1, delta;
printf("ax2 + bx + c = 0\n");
printf("Digite o valor de A, B e C, respectivamente: ");
scanf("%d%d%d", &a, &b, &c);
delta = b*b - 4*a*c;
if(sqrt(delta) >= 0)
{
bask1 = -b + sqrt(delta);
bask2 = -b - sqrt(delta);
printf("Raizes: %.f e %.f", bask1, bask2);
}
else
{
printf("Sem raiz, valor de delta: %.f", delta);
}
}


Compartilhar este post


Link para o post
Compartilhar em outros sites

Não me parece muito correto, o que você acha? A maneira correta para se fazer este execício é desta forma ou acha que há algum jeito mais exato? Tô meio confuso.

 

Já aproveitando este post, tenho outro dúvida:

Como posso comparar um número com o contrário dele? Por exemplo 1982 ao contrário vai ser 2891; eu preciso comparar um número digitado com o inverso dele e descobrir se o inverso é o próprio número, eu fiz um código incorreto, como posso corrigi-lo? (Código abaixo)

#include <stdio.h>

int main()
{
    int num[4];
    printf("Digite um numero (1000 a 9999): ");
    scanf("%d", &num);
    if(num[0] == num[3] && num[1] == num[2])
        printf("Numero %d ao contrario continua o mesmo valor", num);
    else
        printf("Numero %d ao contrario muda para outro valor", num);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

No primeiro problema vc esqueceu que a fórmula de Bhaskara é (-b +- sqrt(delta)) / 2a

No segundo vc pode transformar o número p/ string. Só tem um detalhe: int num[4] é um array de inteiros, ou seja, vc está reservando espaço em memória p/ 4 inteiros e não p/ um inteiro com 4 dígitos.

#include <stdio.h>
 
int main()
{
    char num[4];
    int i,j;
    printf("Digite um numero (1000 a 9999): ");
    scanf("%4s", num); // O 4 delimita quantos caracteres serão lidos.
    for(i=0, j=3; i<j && num[i]==num[j]; i++, j--);
    if (i>j)
       puts("Palíndromo");
    else
       puts("Não é palíndromo");
    return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz deste modo e parece que funcionou:

#include <stdio.h>

int main()
{
    char num[4];
    printf("Digite um numero (1000 a 9999): ");
    scanf("%4s", &num);
    if(num[0] == num[3] && num[1] == num[2])
        printf("Numero %s ao contrario continua o mesmo valor", num);
    else
        printf("Numero %s ao contrario muda para outro valor", num);
}

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.