Equações de primeiro e segundo grau
Publicado por Vinícius dos Santos Oliveira 20/04/2009
[ Hits: 30.156 ]
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 }
Retirar caracteres de uma frase
função de remoção em uma Arvore
Automato Finito Determinístico
Pegando entrada do teclado e guardando em uma string
Instalar e Configurar o Slackware Linux em 2025
Como configurar os repositórios do apt no Debian 12 em 2025
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Como colorir os logs do terminal com ccze
Instalação Microsoft Edge no Linux Mint 22
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Máquinas Virtuais com IP estático acessando Internet no Virtualbox
Meus HDs não aparecem mais no boot da placa mãe (20)
Criar entrada no GRUB para uma ISO Linux (0)
Problema em instalar o PySide6 no Ubuntu 24.04 [RESOLVIDO] (3)