Equações de primeiro e segundo grau
Publicado por Vinícius dos Santos Oliveira 20/04/2009
[ Hits: 30.063 ]
Homepage: https://vinipsmaker.github.io/
Ainda estou aprendendo C, mas acho que não há erros no script, pois eu testei-o várias e várias vezes.
Para equações do primeiro grau responda que "a" é igual a 0 durante a execução (não é compilação, é execução) do programa.
O script está muito bem comentado e identifica quando as equações não são válidas.
/*Este código é um código simples, acho que é innútil tentar patentear uma porta, assim como é inútil tentar patentear a fórmula de resolução da equação do segundo grau, então não tente patentear ou vender este código ou uma versão compilada do mesmo. Versão do código: 1.0 Para compilar, use o comando: gcc -o equacoes.bin -lm equacoes.c Foi meu primeiro grande projeto escrito em c, pois ainda estou aprendendo, mas acho que ficou muito bom. */ #include <stdio.h> #include <math.h> int main(void) //a principal função(?), o void é necessário(?) { char usch; //inclui a variável que permitirá ao usuário escolher entre notação científica ou não para o resultado int a , b , c; float x1 , x2 , delta; printf("ax\1362 + bx + x = 0\n"); //imprime: ax^2 + bx + c = 0 printf("Digite o valor de a\n"); //pede ao usuário para digitar o valor de "a" scanf("%d" , &a); //armazena o valor de a, após o usuário digitar o valor e teclar <enter> printf("Digite o valor de b\n"); scanf("%d" , &b); printf("Digite o valor de c\n"); scanf("%d" , &c); delta = b * b -4 * a * c; //calcula delta if(a == 0) //verifica se a é igual a 0, caso seja, então pode ser uma equação de 1º grau (b != 0) ou não é uma equação (b = 0) { if(b == 0) //verifica se b é igual a 0, lembre-se que este comando só será executado se "a" for igual a 0 { printf("Isso não é uma equação de primeiro ou segundo grau\n"); //informa que é uma equação de 0º grau =) } else //caso "b" seja diferente de 0 { //começo do algoritmo para resolver equações de 1º grau x1 = (-c)/b; //fórmula para resolução printf("Resultado em notação científica{FONTE}77 {FONTE}50s{FONTE}57n{FONTE}51\n"); //imprimi uma pergunta ao usuário scanf("%s" , &usch); //armazena a reposta if(usch == 's') //verifica se a resposta foi s(im) { printf("A raiz desta equação de primeiro grau é %e\n" , x1); //mostra a solução em notação científica } else { printf("A raiz desta equação de primeiro grau é %f\n" , x1); //mostra a solução } } //final do algoritmo para resolver equações de 1º grau } else //caso "a" seja diferente de 0 { if(b == 0) //caso "b" seja igual a 0, então terá de ser usada outra fórmula para resolver as equações { if(a > 0) //começo da validação dos valores da equação { if(c < 0)//final da validação dos valores da equação { x1 = -c / a; //resolução da equação caso "c" seja menor que 0 x1 = sqrt(x1);//resultado de x1 x2 = -1 * x1; //resultado de x2 printf("Resultado em notação científica{FONTE}77 {FONTE}50s{FONTE}57n{FONTE}51\n"); scanf("%s" , &usch); if(usch == 's') { printf("As raízes da função são %e e %e\n" , x1 , x2); } else { printf("As raízes da função são %f e %f\n" , x1 , x2); } } else //a equação não é válida { printf("A função não tem raízes reais\n"); //e esta informação é vista pelo usuário } } else { if(c > 0) //resolução da equação caso "c" seja maior que 0 { x1 = c / -a; x1 = sqrt(x1); x2 = -1 * x1; printf("Resultado em notação científica{FONTE}77 {FONTE}50s{FONTE}57n{FONTE}51\n"); scanf("%s" , &usch); if(usch == 's') { printf("As raízes da função são %e e %e\n" , x1 , x2); } else { printf("As raízes da função são %f e %f\n" , x1 , x2); } } else { printf("A função não tem raízes reais\n"); } } } else //"b" é diferente de 0 e é usado um algoritmo comum para a resolução da equação { if(delta > 0) //se "delta" é maior que 0, então há duas raízes reais { printf("Resultado em notação científica{FONTE}77 {FONTE}50s{FONTE}57n{FONTE}51\n"); scanf("%s" , &usch); delta = sqrt(delta); x1 = (-b + delta)/(2*a); x2 = (-b - delta)/(2*a); if (usch == 's') { printf("As raízes da função são %e e %e\n" , x1 , x2); } else { printf("As raízes da função são %f e %f\n" , x1 , x2); } } else //se "delta" é menor ou igual a 0 ... { if(delta == 0) //se for igual, há uma raiz real { x1 = (-b)/(2*a); //cálculo, não precisa do valor de "delta", pois este comando só será executado se "delta" for igual a 0 printf("Resultado em notação científica{FONTE}77 {FONTE}50s{FONTE}57n{FONTE}51\n"); scanf("%s" , &usch); if(usch == 's') { printf("A raiz da função é %e\n" , x1); } else { printf("A raiz da função é %f\n" , x1); } } else //se "delta" é menor que 0 { //então não há raízes reais printf("A função não tem raízes reais\n"); } } } } return 0; //não sei o que esse comando faz, se souber, por favor me informe }
Bom treino, muito completo: classificação de atletas
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (16)
Arch Linux - Guia para Iniciantes (2)
Problemas ao instalar o PHP (11)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)