Introdução
Neste laboratório, você aprenderá a resolver equações quadráticas em programação C. O laboratório cobre todo o processo, desde a leitura dos coeficientes da equação quadrática, o cálculo do discriminante e a determinação das raízes reais ou complexas. Você escreverá um programa C que solicita os coeficientes ao usuário, realiza os cálculos necessários e imprime as soluções.
O laboratório é dividido em duas etapas principais. Primeiro, você aprenderá a ler os coeficientes a, b e c do usuário. Em seguida, você modificará o programa para calcular o discriminante e usar a fórmula quadrática para encontrar as raízes da equação, lidando com soluções reais e complexas.
Ler a, b, c
Nesta etapa, você aprenderá a ler valores de entrada para uma equação quadrática em C. Criaremos um programa que aceita os coeficientes a, b e c do usuário.
Primeiro, crie um novo arquivo para seu solucionador de equações quadráticas:
cd ~/project
nano quadratic_solver.c
Agora, adicione o seguinte código ao arquivo:
#include <stdio.h>
int main() {
double a, b, c;
// Solicitar entrada ao usuário
printf("Digite o coeficiente a: ");
scanf("%lf", &a);
printf("Digite o coeficiente b: ");
scanf("%lf", &b);
printf("Digite o coeficiente c: ");
scanf("%lf", &c);
// Imprimir os coeficientes inseridos
printf("Coeficientes inseridos:\n");
printf("a = %.2f\n", a);
printf("b = %.2f\n", b);
printf("c = %.2f\n", c);
return 0;
}
Compile o programa:
gcc quadratic_solver.c -o quadratic_solver
Execute o programa:
./quadratic_solver
Exemplo de saída:
Digite o coeficiente a: 1
Digite o coeficiente b: -5
Digite o coeficiente c: 6
Coeficientes inseridos:
a = 1.00
b = -5.00
c = 6.00
Vamos analisar as partes principais do código:
scanf()é usado para ler a entrada do usuário para cada coeficiente%lfé o especificador de formato para números de ponto flutuante de precisão dupla- Armazenamos os coeficientes nas variáveis a, b e c
- O programa imprime os coeficientes inseridos para confirmar a entrada
Calcular o Discriminante e Determinar as Raízes
Nesta etapa, você modificará o programa anterior para calcular o discriminante e determinar as raízes da equação quadrática usando a fórmula quadrática.
Abra o arquivo existente e atualize o código:
cd ~/project
nano quadratic_solver.c
Substitua o código anterior pelo seguinte:
#include <stdio.h>
#include <math.h>
int main() {
double a, b, c;
double discriminant, root1, root2;
// Solicitar entrada ao usuário
printf("Digite o coeficiente a: ");
scanf("%lf", &a);
printf("Digite o coeficiente b: ");
scanf("%lf", &b);
printf("Digite o coeficiente c: ");
scanf("%lf", &c);
// Calcular o discriminante
discriminant = b * b - 4 * a * c;
// Verificar o discriminante para determinar os tipos de raízes
if (discriminant > 0) {
// Duas raízes reais distintas
root1 = (-b + sqrt(discriminant)) / (2 * a);
root2 = (-b - sqrt(discriminant)) / (2 * a);
printf("Duas raízes reais distintas:\n");
printf("Raiz 1 = %.2f\n", root1);
printf("Raiz 2 = %.2f\n", root2);
} else if (discriminant == 0) {
// Uma raiz real (repetida)
root1 = -b / (2 * a);
printf("Uma raiz real (repetida):\n");
printf("Raiz = %.2f\n", root1);
} else {
// Raízes complexas
double realPart = -b / (2 * a);
double imaginaryPart = sqrt(-discriminant) / (2 * a);
printf("Raízes complexas:\n");
printf("Raiz 1 = %.2f + %.2fi\n", realPart, imaginaryPart);
printf("Raiz 2 = %.2f - %.2fi\n", realPart, imaginaryPart);
}
return 0;
}
Compile o programa com a biblioteca matemática:
gcc quadratic_solver.c -o quadratic_solver -lm
Execute o programa com diferentes cenários:
./quadratic_solver
Exemplo de saída (duas raízes reais):
Digite o coeficiente a: 1
Digite o coeficiente b: -5
Digite o coeficiente c: 6
Duas raízes reais distintas:
Raiz 1 = 3.00
Raiz 2 = 2.00
Exemplo de saída (uma raiz real):
Digite o coeficiente a: 1
Digite o coeficiente b: -2
Digite o coeficiente c: 1
Uma raiz real (repetida):
Raiz = 1.00
Exemplo de saída (raízes complexas):
Digite o coeficiente a: 1
Digite o coeficiente b: 2
Digite o coeficiente c: 5
Raízes complexas:
Raiz 1 = -1.00 + 2.00i
Raiz 2 = -1.00 - 2.00i
Pontos-chave no código:
- Usa a fórmula quadrática para calcular as raízes
- Verifica o discriminante para determinar os tipos de raízes
- Trata três cenários: duas raízes reais, uma raiz real e raízes complexas
- Usa a função
sqrt()da bibliotecamath.h - Compila com o sinalizador
-lmpara vincular a biblioteca matemática
Imprimir Soluções Reais ou Complexas
Nesta etapa, você aprimorará o solucionador de equações quadráticas para fornecer uma saída mais detalhada e lidar com diferentes tipos de soluções com formatação melhorada.
Abra o arquivo existente e atualize o código:
cd ~/project
nano quadratic_solver.c
Substitua o código anterior pelo seguinte:
#include <stdio.h>
#include <math.h>
void printQuadraticSolutions(double a, double b, double c) {
double discriminant = b * b - 4 * a * c;
printf("Equação Quadrática: %.2fx² + %.2fx + %.2f = 0\n", a, b, c);
printf("Discriminante: %.2f\n", discriminant);
if (discriminant > 0) {
double root1 = (-b + sqrt(discriminant)) / (2 * a);
double root2 = (-b - sqrt(discriminant)) / (2 * a);
printf("Tipo de Solução: Duas Raízes Reais Distintas\n");
printf("Raiz 1: %.2f\n", root1);
printf("Raiz 2: %.2f\n", root2);
} else if (discriminant == 0) {
double root = -b / (2 * a);
printf("Tipo de Solução: Uma Raiz Real (Repetida)\n");
printf("Raiz: %.2f\n", root);
} else {
double realPart = -b / (2 * a);
double imaginaryPart = sqrt(-discriminant) / (2 * a);
printf("Tipo de Solução: Raízes Conjugadas Complexas\n");
printf("Raiz 1: %.2f + %.2fi\n", realPart, imaginaryPart);
printf("Raiz 2: %.2f - %.2fi\n", realPart, imaginaryPart);
}
}
int main() {
double a, b, c;
printf("Solucionador de Equações Quadráticas\n");
printf("------------------------------------\n");
printf("Digite o coeficiente a: ");
scanf("%lf", &a);
printf("Digite o coeficiente b: ");
scanf("%lf", &b);
printf("Digite o coeficiente c: ");
scanf("%lf", &c);
printf("\n");
printQuadraticSolutions(a, b, c);
return 0;
}
Compile o programa:
gcc quadratic_solver.c -o quadratic_solver -lm
Execute o programa com diferentes cenários:
./quadratic_solver
Exemplo de saída (duas raízes reais):
Solucionador de Equações Quadráticas
------------------------------------
Digite o coeficiente a: 1
Digite o coeficiente b: -5
Digite o coeficiente c: 6
Equação Quadrática: 1.00x² + -5.00x + 6.00 = 0
Discriminante: 1.00
Tipo de Solução: Duas Raízes Reais Distintas
Raiz 1: 3.00
Raiz 2: 2.00
(Exemplos de saída para uma raiz real e raízes complexas omitidos para manter o formato original)
Melhorias-chave:
- Criou uma função separada
printQuadraticSolutions()para melhor organização do código. - Adicionou uma saída mais descritiva com o tipo de solução e detalhes da equação.
- Manteve a mesma lógica de cálculo da raiz da etapa anterior.
- Melhorou a interface do usuário com um título e formatação clara.
Resumo
Neste laboratório, você aprenderá a ler valores de entrada para uma equação quadrática em C, calcular o discriminante e determinar as raízes reais ou complexas usando a fórmula quadrática. O programa solicita ao usuário que insira os coeficientes a, b e c e, em seguida, calcula o discriminante para determinar a natureza das raízes. Finalmente, o programa imprime as soluções reais ou complexas.
Os passos-chave abordados neste laboratório incluem a leitura da entrada do usuário para os coeficientes, o cálculo do discriminante e a aplicação da fórmula quadrática para encontrar as raízes. O programa também confirma os coeficientes de entrada e fornece as soluções calculadas.



