fix superscript 1
This commit is contained in:
@@ -109,8 +109,8 @@ void launch_computorv1(char *input)
|
||||
remove_spaces(input);
|
||||
|
||||
// lexerize
|
||||
arg_len = ft_strlen(input) + 1; // +1 for last END token
|
||||
print_debug("\n-> tokens[%i]\n", arg_len); // debug
|
||||
arg_len = ft_strlen(input) + 1; // +1 for last END token
|
||||
print_debug("\n-> tokens[%i]\n", arg_len);
|
||||
s_token tokens[arg_len];
|
||||
tokens_g_err = tokens;
|
||||
tokens_fill_null(tokens, arg_len);
|
||||
@@ -118,7 +118,7 @@ void launch_computorv1(char *input)
|
||||
|
||||
// parse
|
||||
terms_count_prediction = count_any_of(input, "-+=") + 2; // +1 for first term that can have no leading '+', +1 for last term == NULL
|
||||
print_debug("-> terms[%i]\n\n", terms_count_prediction); // debug
|
||||
print_debug("-> terms[%i]\n\n", terms_count_prediction);
|
||||
s_term terms[terms_count_prediction];
|
||||
terms_g_err = terms;
|
||||
terms_fill_null(terms, terms_count_prediction);
|
||||
@@ -126,7 +126,7 @@ void launch_computorv1(char *input)
|
||||
|
||||
// reduce
|
||||
max_exponent = get_max_exponent(terms);
|
||||
print_debug("-> max_exponent: %i\n\n", max_exponent); // debug
|
||||
print_debug("-> max_exponent: %i\n\n", max_exponent);
|
||||
double polynom[max_exponent + 1];
|
||||
polynom_g_err = polynom;
|
||||
polynom_len_g_err = max_exponent;
|
||||
@@ -134,7 +134,8 @@ void launch_computorv1(char *input)
|
||||
reduce(terms, polynom);
|
||||
|
||||
// print before solution
|
||||
print_before_solution(polynom, max_exponent);
|
||||
print_reduced_form(polynom, max_exponent);
|
||||
print_degree(polynom, max_exponent);
|
||||
|
||||
// solve
|
||||
s_solution solution[1];
|
||||
|
||||
@@ -294,13 +294,13 @@ void lexerize(const char *input, s_token *tokens)
|
||||
}
|
||||
else
|
||||
{
|
||||
stop_errors(&input[input_pos]);
|
||||
stop_errors("input[input_pos] is not any token: %s\n", &input[input_pos]);
|
||||
}
|
||||
|
||||
tokens_count++;
|
||||
if (token_size == 0)
|
||||
{
|
||||
stop_errors(&input[input_pos]);
|
||||
stop_errors("token_size is 0 : %s\n", &input[input_pos]);
|
||||
}
|
||||
input_pos += token_size;
|
||||
}
|
||||
|
||||
23
src/main.c
23
src/main.c
@@ -8,6 +8,7 @@
|
||||
|
||||
bool flag_debug_mode;
|
||||
bool flag_loop_mode;
|
||||
bool flag_beautify_mode;
|
||||
char *input_g_err;
|
||||
s_token *tokens_g_err;
|
||||
s_term *terms_g_err;
|
||||
@@ -19,6 +20,19 @@ s_solution *solution_g_err;
|
||||
* PROGRAM
|
||||
*/
|
||||
|
||||
static void print_usage()
|
||||
{
|
||||
ft_printf("USAGE :\n\n");
|
||||
ft_printf("| ./computorv1 [flags] [polynom]\n");
|
||||
ft_printf("| ./computorv1 [polynom] [flags]\n");
|
||||
ft_printf("| ./computorv1 [flags] -> interactiv mode\n\n");
|
||||
ft_printf("[flags] :\n");
|
||||
ft_printf("-d : print debug\n");
|
||||
ft_printf("-l : interactive loop\n");
|
||||
ft_printf("-b : beautify output\n");
|
||||
ft_putchar('\n');
|
||||
}
|
||||
|
||||
// trim spaces and quotes and newlines
|
||||
static void clean_copy_input(char *input, char *line)
|
||||
{
|
||||
@@ -122,15 +136,24 @@ int main(int ac, char **av)
|
||||
{
|
||||
if ((ft_strcmp(av[i], "-d") == 0))
|
||||
{
|
||||
// flag -d : debug
|
||||
flag_debug_mode = true;
|
||||
}
|
||||
else if ((ft_strcmp(av[i], "-l") == 0))
|
||||
{
|
||||
// flag -l : interactiv loop
|
||||
flag_loop_mode = true;
|
||||
program_mode = MODE_LOOP;
|
||||
}
|
||||
else if ((ft_strcmp(av[i], "-l") == 0))
|
||||
{
|
||||
// flag -b : beautify output
|
||||
flag_beautify_mode = true;
|
||||
}
|
||||
else if (ft_strlen(av[i]) == 2 && av[i][0] == '-')
|
||||
{
|
||||
// unknown flag
|
||||
print_usage();
|
||||
stop_errors("unknwon flag '%s'", av[i]);
|
||||
}
|
||||
else
|
||||
|
||||
@@ -123,6 +123,7 @@ void stop_errors(const char *description, ...)
|
||||
va_start(args, description);
|
||||
ft_vdprintf(STDERR_FILENO, description, args);
|
||||
va_end(args);
|
||||
ft_putchar_fd('\n', STDERR_FILENO);
|
||||
|
||||
// print the base message
|
||||
if (flag_debug_mode)
|
||||
|
||||
@@ -15,7 +15,7 @@ void print_debug(const char *description, ...)
|
||||
va_end(args);
|
||||
}
|
||||
|
||||
void print_before_solution(double *polynom, int max_exponent)
|
||||
void print_reduced_form(double *polynom, int max_exponent)
|
||||
{
|
||||
int i;
|
||||
|
||||
@@ -40,16 +40,33 @@ void print_before_solution(double *polynom, int max_exponent)
|
||||
i--;
|
||||
}
|
||||
ft_putstr("= 0\n");
|
||||
}
|
||||
|
||||
// // check errors
|
||||
// ft_printf(": ");
|
||||
// ft_printf(": ");
|
||||
// ft_printf(": ");
|
||||
void print_degree(double *polynom, int max_exponent)
|
||||
{
|
||||
|
||||
// degree
|
||||
ft_printf("Polynomial degree: %i\n", max_exponent);
|
||||
if (max_exponent > 2)
|
||||
if (max_exponent == 0)
|
||||
{
|
||||
if (polynom[0] == 0)
|
||||
{
|
||||
stop_errors("Any real number is a solution.\n");
|
||||
}
|
||||
else if (polynom[0] != 0)
|
||||
{
|
||||
stop_errors("No solution.\n");
|
||||
}
|
||||
}
|
||||
else if (max_exponent == 1)
|
||||
{
|
||||
ft_printf("Polynomial degree: %i\n", max_exponent);
|
||||
}
|
||||
else if (max_exponent == 2)
|
||||
{
|
||||
ft_printf("Polynomial degree: %i\n", max_exponent);
|
||||
}
|
||||
else
|
||||
{
|
||||
ft_printf("Polynomial degree: %i\n", max_exponent);
|
||||
stop_errors("The polynomial degree is strictly greater than 2, I can't solve.\n");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user