pushswap/input_check.c
2023-12-12 17:44:13 +01:00

83 lines
1.8 KiB
C
Executable File

/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* input_check.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: fgras-ca <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2023/07/31 21:05:07 by fgras-ca #+# #+# */
/* Updated: 2023/07/31 22:01:50 by fgras-ca ### ########.fr */
/* */
/* ************************************************************************** */
#include "push_swap.h"
static int arg_is_number(char *argv)
{
int i;
i = 0;
if (is_sign(argv[i]) && argv[i + 1] != '\0')
i++;
while (argv[i] && is_digit(argv[i]))
i++;
if (argv[i] != '\0' && !is_digit(argv[i]))
return (0);
return (1);
}
static int have_duplicates(char **argv)
{
int i;
int j;
i = 1;
while (argv[i])
{
j = 1;
while (argv[j])
{
if (j != i && nbstr_cmp(argv[i], argv[j]) == 0)
return (1);
j++;
}
i++;
}
return (0);
}
static int arg_is_zero(char *argv)
{
int i;
i = 0;
if (is_sign(argv[i]))
i++;
while (argv[i] && argv[i] == '0')
i++;
if (argv[i] != '\0')
return (0);
return (1);
}
int is_correct_input(char **argv, int start_idx)
{
int i;
int nb_zeros;
nb_zeros = 0;
i = start_idx;
while (argv[i])
{
if (!arg_is_number(argv[i]))
return (0);
nb_zeros += arg_is_zero(argv[i]);
i++;
}
if (nb_zeros > 1)
return (0);
if (have_duplicates(argv))
return (0);
return (1);
}