add positiv_zero in output

This commit is contained in:
hugogogo
2026-05-15 02:45:55 +02:00
parent 0603050d30
commit 2824414f53
5 changed files with 22 additions and 21 deletions

View File

@@ -129,14 +129,14 @@ static void print_solution_pure_radicand_negativ(s_solution_degree_2_pure soluti
static void print_solution_delta_zero(s_solution_degree_2 solution)
{
ft_printf("Discriminant is equal to zero, the solution is:\n");
printf("%g\n", solution.left_term);
printf("%g\n", positiv_zero(solution.left_term));
}
static void print_solution_delta_positiv(s_solution_degree_2 solution)
{
ft_printf("Discriminant is strictly positive, the two solutions are:\n");
printf("%g\n", solution.left_term + solution.right_term);
printf("%g\n", solution.left_term - solution.right_term);
printf("%g\n", positiv_zero(solution.left_term + solution.right_term));
printf("%g\n", positiv_zero(solution.left_term - solution.right_term));
}
static void print_solution_delta_negativ(s_solution_degree_2 solution)
@@ -154,7 +154,7 @@ static void print_solution_delta_negativ(s_solution_degree_2 solution)
if (solution.all_int)
{
denominator = solution.a * 2;
denominator = positiv_zero(solution.a * 2);
denominator_abs = ft_fabs(denominator);
denominator_sign = ft_fsign(denominator);
// solution 1
@@ -167,7 +167,7 @@ static void print_solution_delta_negativ(s_solution_degree_2 solution)
printf("- ");
else if (has_first_term)
printf("+ "); // dont print '+' if it's first term
printf("%gi/%g\n", solution.delta_sqrt, denominator_abs);
printf("%gi/%g\n", positiv_zero(solution.delta_sqrt), denominator_abs);
// solution 2
if (!is_nearly_equal_zero(solution.b))
@@ -179,11 +179,11 @@ static void print_solution_delta_negativ(s_solution_degree_2 solution)
printf("- ");
else if (has_first_term)
printf("+ "); // dont print '+' if it's first term
printf("%gi/%g\n", solution.delta_sqrt, denominator_abs);
printf("%gi/%g\n", positiv_zero(solution.delta_sqrt), denominator_abs);
}
else
{
right_term_abs = ft_fabs(solution.right_term);
right_term_abs = positiv_zero(ft_fabs(solution.right_term));
right_term_sign = ft_fsign(solution.right_term);
// solution 1

View File

@@ -2,13 +2,6 @@
#include "computorv1.h"
static double positiv_zero(double num)
{
if (num == 0)
return 0;
return num;
}
static void solve_degree_1(s_solution_degree_1 *solution, double a, double b)
{
solution->a = a;

View File

@@ -31,6 +31,13 @@ const s_polynom *get_term_of_power(const s_polynom *polynom, int power)
return &polynom[i];
}
double positiv_zero(double num)
{
if (is_nearly_equal_zero(num))
return 0.0;
return num;
}
bool has_decimal_part(double num)
{
return (!is_nearly_equal(num, (int)num));