mirror of
https://github.com/DavidGailleton/42-Push_Swap.git
synced 2026-01-27 08:41:58 +00:00
fixing the parsing
This commit is contained in:
@@ -11,6 +11,17 @@
|
|||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "check_error.h"
|
#include "check_error.h"
|
||||||
|
#include "parsing.h"
|
||||||
|
|
||||||
|
int verif_is_number(char **tab)
|
||||||
|
{
|
||||||
|
int len;
|
||||||
|
|
||||||
|
len = len_split(tab);
|
||||||
|
if (tab[len - 1][0] == '-')
|
||||||
|
return (0);
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
|
||||||
int check_error(char **tab, int mod)
|
int check_error(char **tab, int mod)
|
||||||
{
|
{
|
||||||
@@ -22,5 +33,7 @@ int check_error(char **tab, int mod)
|
|||||||
return (0);
|
return (0);
|
||||||
if (!verif_double(tab, mod))
|
if (!verif_double(tab, mod))
|
||||||
return (0);
|
return (0);
|
||||||
|
if (!verif_is_number(tab))
|
||||||
|
return (0);
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,11 +17,11 @@ static int is_exist_flag(char **tab, int pos)
|
|||||||
int verif;
|
int verif;
|
||||||
|
|
||||||
verif = 0;
|
verif = 0;
|
||||||
if (ft_strncmp(tab[pos], "--bench", 7)
|
if (ft_strncmp(tab[pos], "--bench", 30)
|
||||||
|| ft_strncmp(tab[pos], "--simple", 8)
|
|| ft_strncmp(tab[pos], "--simple", 30)
|
||||||
|| ft_strncmp(tab[pos], "--medium", 8)
|
|| ft_strncmp(tab[pos], "--medium", 30)
|
||||||
|| ft_strncmp(tab[pos], "--adaptive", 10)
|
|| ft_strncmp(tab[pos], "--adaptive", 30)
|
||||||
|| ft_strncmp(tab[pos], "--complex", 9))
|
|| ft_strncmp(tab[pos], "--complex", 30))
|
||||||
verif = 1;
|
verif = 1;
|
||||||
return (verif);
|
return (verif);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
#include "parsing.h"
|
#include "parsing.h"
|
||||||
|
|
||||||
static int scan_str_is_digit(char *tab)
|
int scan_str_is_digit(char *tab)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@@ -21,7 +21,9 @@ static int scan_str_is_digit(char *tab)
|
|||||||
{
|
{
|
||||||
if (!ft_isdigit(tab[i]) && (tab[i] == '-' && !ft_isdigit(tab[i + 1])))
|
if (!ft_isdigit(tab[i]) && (tab[i] == '-' && !ft_isdigit(tab[i + 1])))
|
||||||
return (0);
|
return (0);
|
||||||
if (tab[i] == '+' && !ft_isdigit(tab[i + 1]))
|
else if (tab[i] == '+' && !ft_isdigit(tab[i + 1]))
|
||||||
|
return (0);
|
||||||
|
else if (!ft_isdigit(tab[i]))
|
||||||
return (0);
|
return (0);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,5 +18,6 @@ int check_error(char **tab, int mod);
|
|||||||
int verif_is_digit(char **tab, int mod);
|
int verif_is_digit(char **tab, int mod);
|
||||||
int verif_overflow(char **tab, int mod);
|
int verif_overflow(char **tab, int mod);
|
||||||
int verif_double(char **tab, int mod);
|
int verif_double(char **tab, int mod);
|
||||||
|
int scan_str_is_digit(char *tab);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
8
main.c
8
main.c
@@ -22,10 +22,18 @@ int main(int argc, char **argv)
|
|||||||
int mod;
|
int mod;
|
||||||
int len;
|
int len;
|
||||||
|
|
||||||
|
if (argc < 2)
|
||||||
|
return (0);
|
||||||
tab = split_all(join_all(argc, argv));
|
tab = split_all(join_all(argc, argv));
|
||||||
if (!tab)
|
if (!tab)
|
||||||
return (0);
|
return (0);
|
||||||
len = len_split(tab);
|
len = len_split(tab);
|
||||||
|
if (!scan_str_is_digit(tab[len - 1]))
|
||||||
|
{
|
||||||
|
free_tab(tab);
|
||||||
|
write(2, "Error\n", 7);
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
mod = calcul_mod(len, tab);
|
mod = calcul_mod(len, tab);
|
||||||
if (check_error(tab, mod))
|
if (check_error(tab, mod))
|
||||||
test1(tab, len, mod);
|
test1(tab, len, mod);
|
||||||
|
|||||||
@@ -27,7 +27,10 @@ int test1(char **tab, int len, int mod)
|
|||||||
if (!stacks)
|
if (!stacks)
|
||||||
return (0);
|
return (0);
|
||||||
if (check_order(stacks->a))
|
if (check_order(stacks->a))
|
||||||
|
{
|
||||||
|
free_all(stacks);
|
||||||
return (0);
|
return (0);
|
||||||
|
}
|
||||||
flags(pos_flag(tab, mod), pos_bench(tab, mod), tab, stacks);
|
flags(pos_flag(tab, mod), pos_bench(tab, mod), tab, stacks);
|
||||||
if (stacks->bench == 1)
|
if (stacks->bench == 1)
|
||||||
print_bench(stacks);
|
print_bench(stacks);
|
||||||
|
|||||||
Reference in New Issue
Block a user