Equação do segundo grau
Publicado por Gabriel (última atualização em 03/05/2010)
[ Hits: 10.044 ]
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; }
Barra de carregamento (Loading Bar)
Multiplicação de matrizes com indireção múltipla
Função switch q armazena sequencias
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
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
remove aspas dupla de dentro do arquivo (1)
Acabei de formatar meu ssd e deu erro (3)
Desempenho abaixo do esperado - travadas e congelamento do sistema ope... (5)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta