Equação do segundo grau
Publicado por Gabriel (última atualização em 03/05/2010)
[ Hits: 9.907 ]
Uma brincadeira que eu fiz para resolver uma equação do segundo grau utilizando comandos.
/* This program solves a quadratic equation */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> typedef struct s_cmd_line { char cmd[4]; float a; float b; float c; } t_cmd_line; t_cmd_line cmd_line; char line[100]; /* command line */ void stread () { int i = 0; fgets(line,sizeof(line),stdin); /* cmd */ for (i = 0; i < 4; ++i) { cmd_line.cmd[i] = line[i]; line[i] = ' '; /* erase the cmd */ } /* a, b, c */ sscanf(line, "%f %f %f", &cmd_line.a, &cmd_line.b, &cmd_line.c); } int main () { float a = 0, b = 0, c = 0; /* coeficients */ float delta = 0; /* discriminant */ float r1 = 0, r2 = 0; /* roots */ /* Display */ system("clear"); printf("\n==================\n"); printf("Quadratic Equation"); printf("\n==================\n\n"); printf("Welcome. Type 'help' for help.\n\n"); /* Commands */ /* - zero : clear all the variables - read %f %f %f : enter new coeficients - show : show the equation informed - root : find the roots, the parameter shows the result in fractions - exit : kill the program */ while (strcmp(cmd_line.cmd,"exit")) { printf("> "); stread(); /* read the command line */ /* zero */ if (!strcmp(cmd_line.cmd,"zero")) { a = 0; b = 0; c = 0; } /* read */ if (!strcmp(cmd_line.cmd,"read")) { a = cmd_line.a; b = cmd_line.b; c = cmd_line.c; } /* show */ if (!strcmp(cmd_line.cmd,"show")) printf("(%f) x^2 + (%f) x + (%f) = 0\n", a, b, c); /* root */ if (!strcmp(cmd_line.cmd,"root")) { if (a != 0) { /* discriminant */ delta = b * b - 4 * a * c; r1 = - b / (2*a); r2 = r1; if (delta >= 0) { /* real roots */ r1 = r1 + (sqrt(delta)/(2*a)); r2 = r2 - (sqrt(delta)/(2*a)); printf(" r1 = %f \n r2 = %f\n", r1, r2); } else { /* complex roots */ delta = - delta; printf(" r1 = %f + i %f \n r2 = %f - i %f\n", r1, (sqrt(delta)/(2*a)), r2, (sqrt(delta)/(2*a))); } } else { /* a == 0 */ printf("'a' mustn't be zero \n"); } } /* help */ if (!strcmp(cmd_line.cmd,"help")) { printf("\nCommands\n"); printf(" - zero : clear all the variables\n"); printf(" - read %%f %%f %%f : enter new coeficients \n"); printf(" - show : show the equation informed\n"); printf(" - root : find the roots\n - exit : kill the program\n\n"); } } printf("\nbye\n\n"); return 0; }
Calculo de Área e Diametro do circulo
Tabuada de um determinado número
EXEMPLO DA ULTILIZAÇÃO DE PONTEIROS
Melhorando o tempo de boot do Fedora e outras distribuições
Como instalar as extensões Dash To Dock e Hide Top Bar no Gnome 45/46
E a guerra contra bots continua
Tradução do artigo do filósofo Gottfried Wilhelm Leibniz sobre o sistema binário
Conheça o firewall OpenGFW, uma implementação do (Great Firewall of China).
Instalando o FreeOffice no LMDE 6
Anki: Remover Tags de Estilo HTML de Todas as Cartas
Colocando uma opção de redimensionamento de imagem no menu de contexto do KDE
Não consigo acessar os modos de desempenho (1)
Criar um script para testar pen drive (5)
Problema com alias usando locate (4)
[Shell Script] Script para desinstalar pacotes desnecessários no OpenSuse
[Shell Script] Script para criar certificados de forma automatizada no OpenVpn
[Shell Script] Conversor de vídeo com opção de legenda
[C/C++] BRT - Bulk Renaming Tool
[Shell Script] Criação de Usuarios , Grupo e instalação do servidor de arquivos samba