Início > Programando em C - Códigos & Experiências > C: Exemplificando funções com a calculadora de equações de 2º grau

C: Exemplificando funções com a calculadora de equações de 2º grau

Essa é a segunda versão da calculadora de equações de segundo grau, postada anteriormente.

Essa versão reescreve todo o programa apenas com o uso de funções.
Eis o código comentado:

/* 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 
#include 

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\n",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);
}

Como é possível perceber, inteiramente esscrita com funções!

Anúncios
  1. Agdelman
    março 11, 2009 às 01:07

    uia… sugoi… eu amo esses programinhas… eu fazia um monte na facul… agora vou pegar esse seu e passar para pascal =P

  1. No trackbacks yet.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: