Calculadora de equações de 2º grau versão 2 (com funções)
Esta é a segunda versão da calculadora que calcula expressões de segundo grau. Diferentemente da primeira, esta foi escrita com funções, e demonstra seu uso.
Lembrando que por enquanto elas não tem a capacidade de tratar erros (como inserção de caracteres especiais e letras).
Até!
Lembrando que por enquanto elas não tem a capacidade de tratar erros (como inserção de caracteres especiais e letras).
Até!
Descrição
Esta é a segunda versão da calculadora que calcula expressões de segundo grau. Diferentemente da primeira, esta foi escrita com funções, e demonstra seu uso.
Lembrando que por enquanto elas não tem a capacidade de tratar erros (como inserção de caracteres especiais e letras).
Até!
Lembrando que por enquanto elas não tem a capacidade de tratar erros (como inserção de caracteres especiais e letras).
Até!
/* equ_seg.c_00 Programa que deve resolver equações de segundo grau
* Demonstra o uso de funções
* compilar (gcc) com a opção -lm, para que o compilador reconheça as expressões
* da biblioteca math.h
* */
#include <stdio.h>
#include <math.h> // biblioteca com funções matematicas, compilar o programa com a opção -lm, para que o compilador as conheça
// gcc -oequ_seg_00.c -Wall -lm (linux)
float entra_dados_a(); //requisitará o coeficiente de "a" ao usuário
float entra_dados_b();
float entra_dados_c();
float calcula_delta(float a, float b, float c); // calculará delta
int testa_delta(float a, float b, float c); //verificará se delta é positivo
int calcula_raizes(float a, float b, float c, float delta); //calculará as raizes
char deposito[50]; //variavel global para armazenamento de valores pelo fgets
int main(void) //função principal sem valor de retorno(void)
{
float delta; //inicializando as variaveis
float a,b,c;
a = entra_dados_a(); //atribuindo o valor de a
b = entra_dados_b();
c = entra_dados_c();
printf("Equação de segundo grau %.fx²+%.fx+%.f",a,b,c);
testa_delta(a,b,c);
delta = calcula_delta(a,b,c); //calcula e atribui o valor a delta
if (delta>=0) //verifica se delta é maior ou igual a zero
{
calcula_raizes(a,b,c,delta); //em caso positivo, calcula as raizes da equação
}
else
{
printf ("Delta é negativo, não existem raizes reais\n");//em caso negativo, avisa o usuário que não há raizes reais
}
return (0);
}
float entra_dados_a() //entrada de dados do coeficiente a
{
float a;
printf("Calculo para equação de segundo grau ax^2+bx+c\n");
printf("Forneca me o primeiro numero da equação a = ");
fgets(deposito, sizeof(deposito), stdin);
sscanf(deposito, "%f", &a);
return(a);
}
float entra_dados_b()//entrada de dados do coeficiente b
{
float b;
printf("\nForneca me o segundo numero b = ");
fgets(deposito, sizeof(deposito), stdin);
sscanf(deposito, "%f", &b);
return(b);
}
float entra_dados_c()//entrada de dados do coeficiente c
{
float c;
printf("\nForneca me o terceiro numero c = ");
fgets(deposito, sizeof(deposito), stdin);
sscanf(deposito, "%f", &c);
return(c);
}
int testa_delta(float a,float b,float c) //verifica se delta é positivo
{
if (calcula_delta(a,b,c) >=0)
return 1; // Retorna o valor 1 à função (valor que sera testado)
else
return 0; // Retorna o valor 0 à função (valor que sera testado)
}
float calcula_delta(float a,float b,float c) //calcula o valor de delta
{
return b*b-4*a*c;
}
int calcula_raizes(float a,float b,float c, float delta) //calcula as raizes de delta
{
printf("\nAs raizes da equacao sao:\n\t x1= %.2f \n\t x2= %.2f\n",(-b+sqrt(delta)/2*a),(-b-sqrt(delta)/2*a)); /*aplica a formula de baskara e imprime na tela as raizes da equação*/
return(0);
}