Equações de primeiro e segundo grau
Publicado por Vinícius dos Santos Oliveira 20/04/2009
[ Hits: 30.061 ]
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 }
função de remoção em uma Arvore
Mini Analisador Léxico que conta palavras numa string
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? (15)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)
Pendrive não formata de jeito nenhum (4)