Equação do segundo grau
Publicado por Gabriel (última atualização em 03/05/2010)
[ Hits: 10.433 ]
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;
}
Utilizando arrays, funções e arquivos de texto
LazyDocker – Interface de Usuário em Tempo Real para o Docker
Instalando COSMIC no Linux Mint
Turbinando o Linux Mint: o poder das Nemo Actions
Inteligência Artificial no desenvolvimento de software: quando começar a usar?
[Resolvido] Algo deu errado ao abrir seu perfil
Usando o VNSTAT para medir o seu consumo de internet
Habilitando clipboard manager no ambiente COSMIC
Quando vocês pararam de testar distros? (12)
Problema com som no laptop (3)
Não estou conseguindo fazer funcionar meu Postfix na versão 2.4 no Deb... (2)









