From ef1c6b5e756095eeaee189b69c1139fa75209b96 Mon Sep 17 00:00:00 2001 From: Guy Baconniere Date: Mon, 16 Aug 2021 16:51:24 +0200 Subject: [PATCH] sync --- C_Piscine_C_04/c-04.tar | Bin 0 -> 19456 bytes C_Piscine_C_04/git/ex03/ft_atoi.c | 16 +++---- C_Piscine_C_04/git/ex03/main.c | 4 +- C_Piscine_C_04/git/ex04/ft_putnbr_base.c | 42 +++++++++++++++++ C_Piscine_C_04/git/ex04/main.c | 33 +++++++++++++ C_Piscine_C_04/git/ex04/main.sh | 8 ++++ C_Piscine_C_04/git/ex05/ft_atoi_base.c | 57 +++++++++++++++++++++++ C_Piscine_C_04/git/ex05/main.c | 33 +++++++++++++ C_Piscine_C_04/git/ex05/main.sh | 8 ++++ C_Piscine_C_04/tests_C04/ex00.c | 12 +++++ C_Piscine_C_04/tests_C04/ex01.c | 15 ++++++ C_Piscine_C_04/tests_C04/ex02.c | 15 ++++++ C_Piscine_C_04/tests_C04/ex03.c | 17 +++++++ C_Piscine_C_04/tests_C04/ex04.c | 31 ++++++++++++ C_Piscine_C_04/tests_C04/ex05.c | 43 +++++++++++++++++ C_Piscine_C_04/tests_C04/main.sh | 8 ++++ 16 files changed, 332 insertions(+), 10 deletions(-) create mode 100644 C_Piscine_C_04/c-04.tar create mode 100644 C_Piscine_C_04/git/ex04/ft_putnbr_base.c create mode 100644 C_Piscine_C_04/git/ex04/main.c create mode 100755 C_Piscine_C_04/git/ex04/main.sh create mode 100644 C_Piscine_C_04/git/ex05/ft_atoi_base.c create mode 100644 C_Piscine_C_04/git/ex05/main.c create mode 100755 C_Piscine_C_04/git/ex05/main.sh create mode 100644 C_Piscine_C_04/tests_C04/ex00.c create mode 100644 C_Piscine_C_04/tests_C04/ex01.c create mode 100644 C_Piscine_C_04/tests_C04/ex02.c create mode 100644 C_Piscine_C_04/tests_C04/ex03.c create mode 100644 C_Piscine_C_04/tests_C04/ex04.c create mode 100644 C_Piscine_C_04/tests_C04/ex05.c create mode 100755 C_Piscine_C_04/tests_C04/main.sh diff --git a/C_Piscine_C_04/c-04.tar b/C_Piscine_C_04/c-04.tar new file mode 100644 index 0000000000000000000000000000000000000000..f694fe2dfee040f00f85b23aff2480e7ceaeddf5 GIT binary patch literal 19456 zcmeI3TW{Mo6vy*weF`pa2Ippz5@n}sQw;4eY%jyGV(3Fw1d`0u!fYy_81N1Xa0@xo)3cpmXFKdFN+AqG!WFz>;?XXeMV`R`M*lsI5 z_{_KNjVvUMV0ngz?r6cS4HOu3J;!OsA{tMJ9KBAnVVrbFZ)!0x;z@9PFeK$Pob60ifnZfT@VzZqWWD+<#f4ww6dubsDnZHUuQ2L$UANn zFX#Vs^jN2csd3=Le1FgUk6nNPHUCo=58Odt&Ht`v=l{pL95cG@?|NY@dg;hXd4|rp z(-w)G#DZrTN9VtzcOxGC^;06lcsS(ZeKM61|Ct9vF4YJ>=|;|~<(*Gagw8(%<1u{l zyG#b^TgpVD^8^Lm1RgU=k4K{fz37BN%0)2Y=*4dzemrJQx0e@jX=z^|U$@2foXlVI=j;`O#Iae3o`#(#u@LBGjy2aJW&uo2mcEBbt_9u z*Qjste9hq=YOo%|3397#U!`?yPh5Y zySVEt|6BfV>VeYwuiOgSxlk4}*7bY%-*uVWZ^ZRY_@59)E|_oa|JqHk$o^mBe-X+K z*zb`Dfva=Jz^wIOS^Gu!wVnUh=_KTG&b&Vaqx|=|Qn9*F>iT#Q>x_W|{xibj21 zPjXB8yLh}WJx4YF?-~DF``^-Qw~Ydp|F_YL&sPJ+zxUMq@A*3Z2ZDqKeN1)ykLCZJ z+*FqTORQbCW9|P%4=v(<;xgK2lx&Ir`v|-VlrnfKGzAn{`#*#Z&By-)SrV^g{D-Rb z;Gbo&KP$)mqa{eFSJpQLoeL^78SH=H()Y|`daZ6eLUxxi`~S6ype>vL@(k(M0aRMEM<9P6KxNmL1e>@B4Dst12i}4rx@ulJ z6pg8z3cAT6JVPdHxqm^GRPPfMAw}S4$W@H9p^~yLho|N9q>=K9U~pEL_v z{;%`D3hIHtdSwmQBwfA&ydwTr4uQtiz=IqF>n{t+7k_7d6ST2ndLs&nY7Jo40$+O> sYHNa0VAkRAjXDad`G3#&-?#JsF6MvB|GVgAdk)(Jwg+qv>|YQ32T +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2021/08/13 12:46:22 by gbaconni #+# #+# */ -/* Updated: 2021/08/13 14:58:30 by gbaconni ### ########.fr */ +/* Updated: 2021/08/16 13:49:34 by gbaconni ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,23 +17,21 @@ int ft_atoi(char *str) int i; nb = 0; - s = 0; + s = 1; i = 0; + while (str[i] != '\0' && (str[i] == ' ' || (str[i] >= '\t' && str[i] <= '\r'))) + i++; while (str[i] != '\0') { - if (str[i] == ' ' || (str[i] >= '\t' && str[i] <= '\r')) + if (str[i] == '+') s += 0; - else if (str[i] == '+') - s++; else if (str[i] == '-') - s--; + s *= -1; else if (str[i] >= '0' && str[i] <= '9') nb = nb * 10 + str[i] - '0'; else break ; i++; } - if (s < 0) - nb *= -1; - return (nb); + return (nb * s); } diff --git a/C_Piscine_C_04/git/ex03/main.c b/C_Piscine_C_04/git/ex03/main.c index 7fc3eb3..38bab34 100644 --- a/C_Piscine_C_04/git/ex03/main.c +++ b/C_Piscine_C_04/git/ex03/main.c @@ -6,7 +6,7 @@ /* By: gbaconni +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2021/08/13 12:46:41 by gbaconni #+# #+# */ -/* Updated: 2021/08/13 13:58:09 by gbaconni ### ########.fr */ +/* Updated: 2021/08/16 13:44:04 by gbaconni ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,5 +26,7 @@ int main(void) scanf("%s", str); result = ft_atoi(str); printf("str=%s result=%d (ft_atoi)\n", str, result); + result = atoi(str); + printf("str=%s result=%d (atoi)\n", str, result); return (0); } diff --git a/C_Piscine_C_04/git/ex04/ft_putnbr_base.c b/C_Piscine_C_04/git/ex04/ft_putnbr_base.c new file mode 100644 index 0000000..ea56b78 --- /dev/null +++ b/C_Piscine_C_04/git/ex04/ft_putnbr_base.c @@ -0,0 +1,42 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putnbr_base.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gbaconni +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/08/16 13:51:16 by gbaconni #+# #+# */ +/* Updated: 2021/08/16 14:25:07 by gbaconni ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include +#include + +void ft_putnbr_base(int nbr, char *base) +{ + int size; + + size = 0; + while (base[++size] != '\0') + continue ; + if (nbr < 0) + { + nbr *= -1; + write(1, "-", 1); + } + if (nbr >= 0 && nbr < size) + { + write(1, base + nbr, 1); + } + else if (nbr == -2147483648) + { + ft_putnbr_base((nbr / size) * -1, base); + ft_putnbr_base((nbr % size) * -1, base); + } + else + { + ft_putnbr_base(nbr / size, base); + ft_putnbr_base(nbr % size, base); + } +} diff --git a/C_Piscine_C_04/git/ex04/main.c b/C_Piscine_C_04/git/ex04/main.c new file mode 100644 index 0000000..686eba6 --- /dev/null +++ b/C_Piscine_C_04/git/ex04/main.c @@ -0,0 +1,33 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gbaconni +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/08/16 13:53:07 by gbaconni #+# #+# */ +/* Updated: 2021/08/16 13:55:59 by gbaconni ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include +#include +#include +#include + +void ft_putnbr_base(int nbr, char *base); + +int main(void) +{ + char base[32]; + int nb; + + printf("Input Number: "); + scanf("%d", &nb); + printf("Input Base [31]: "); + scanf("%s", base); + ft_putnbr_base(nb, base); + write(1, "\n", 1); + printf("nb=%d base=%s (ft_putnbr_base)\n", nb, base); + return (0); +} diff --git a/C_Piscine_C_04/git/ex04/main.sh b/C_Piscine_C_04/git/ex04/main.sh new file mode 100755 index 0000000..292faee --- /dev/null +++ b/C_Piscine_C_04/git/ex04/main.sh @@ -0,0 +1,8 @@ +#!/bin/sh +set -e +#norminette -R CheckForbiddenSourceHeader ft_*.c +norminette -R CheckForbiddenSourceHeader +gcc -Wall -Wextra -Werror -o a.out *.c +echo $(basename $PWD): +./a.out +rm -f a.out diff --git a/C_Piscine_C_04/git/ex05/ft_atoi_base.c b/C_Piscine_C_04/git/ex05/ft_atoi_base.c new file mode 100644 index 0000000..7a3de71 --- /dev/null +++ b/C_Piscine_C_04/git/ex05/ft_atoi_base.c @@ -0,0 +1,57 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_atoi_base.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gbaconni +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/08/16 13:53:46 by gbaconni #+# #+# */ +/* Updated: 2021/08/16 15:05:08 by gbaconni ### ########.fr */ +/* */ +/* ************************************************************************** */ + +static int ft_strlen(char *str) +{ + int size; + + size = 0; + while (str[++size] != '\0') + continue ; + return (size); +} + +static int ft_nbase(char c, char *base) +{ + int n; + + n = 0; + while (base[n] != '\0' && base[n] != c) + n++; + return (n); +} + +int ft_atoi_base(char *str, char *base) +{ + int nb; + int s; + int i; + int size; + + size = ft_strlen(base); + nb = 0; + s = 1; + i = 0; + while (str[i] != '\0' && (str[i] == ' ' || (str[i] >= '\t' && str[i] <= '\r'))) + i++; + while (str[i] != '\0') + { + if (str[i] == '+') + s += 0; + else if (str[i] == '-') + s *= -1; + else + nb = nb * size + ft_nbase(str[i], base); + i++; + } + return (nb * s); +} diff --git a/C_Piscine_C_04/git/ex05/main.c b/C_Piscine_C_04/git/ex05/main.c new file mode 100644 index 0000000..14ef847 --- /dev/null +++ b/C_Piscine_C_04/git/ex05/main.c @@ -0,0 +1,33 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gbaconni +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/08/16 13:53:58 by gbaconni #+# #+# */ +/* Updated: 2021/08/16 13:55:18 by gbaconni ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include +#include +#include +#include + +int ft_atoi_base(char *str, char *base); + +int main(void) +{ + char str[32]; + char base[32]; + int result; + + printf("Input String [31]: "); + scanf("%s", str); + printf("Input Base [31]: "); + scanf("%s", base); + result = ft_atoi_base(str, base); + printf("str=%s base=%s result=%d (ft_atoi_base)\n", str, base, result); + return (0); +} diff --git a/C_Piscine_C_04/git/ex05/main.sh b/C_Piscine_C_04/git/ex05/main.sh new file mode 100755 index 0000000..292faee --- /dev/null +++ b/C_Piscine_C_04/git/ex05/main.sh @@ -0,0 +1,8 @@ +#!/bin/sh +set -e +#norminette -R CheckForbiddenSourceHeader ft_*.c +norminette -R CheckForbiddenSourceHeader +gcc -Wall -Wextra -Werror -o a.out *.c +echo $(basename $PWD): +./a.out +rm -f a.out diff --git a/C_Piscine_C_04/tests_C04/ex00.c b/C_Piscine_C_04/tests_C04/ex00.c new file mode 100644 index 0000000..d266b6a --- /dev/null +++ b/C_Piscine_C_04/tests_C04/ex00.c @@ -0,0 +1,12 @@ +#include +#include "../ex00/ft_strlen.c" + +int main(void) +{ + char *a = "12345678"; + char b[1]; + + b[0] = 0; + printf("Test\nexpected : 8 | result : %d\n", ft_strlen(a)); + printf("Test\nexpected : 0 | result : %d\n", ft_strlen(b)); +} diff --git a/C_Piscine_C_04/tests_C04/ex01.c b/C_Piscine_C_04/tests_C04/ex01.c new file mode 100644 index 0000000..e57a750 --- /dev/null +++ b/C_Piscine_C_04/tests_C04/ex01.c @@ -0,0 +1,15 @@ +#include +#include "../ex01/ft_putstr.c" + +int main(void) +{ + char b[1]; + char *a = "12345678"; + + b[0] = 0; + printf("\nTest\nexpected : %s | result : \n", a); + ft_putstr(a); + printf("\nTest\nexpected : %s | result : \n", b); + ft_putstr(b); + printf("\n"); +} diff --git a/C_Piscine_C_04/tests_C04/ex02.c b/C_Piscine_C_04/tests_C04/ex02.c new file mode 100644 index 0000000..5e1c1c6 --- /dev/null +++ b/C_Piscine_C_04/tests_C04/ex02.c @@ -0,0 +1,15 @@ +#include +#include "../ex02/ft_putnbr.c" + +int main(void) +{ + printf("\nTest\nexpected : 1230234 | result : \n"); + ft_putnbr(1230234); + printf("\nTest\nexpected : 0 | result : \n"); + ft_putnbr(0); + printf("\nTest\nexpected : -253 | result : \n"); + ft_putnbr(-253); + printf("\nTest\nexpected : -2147483648 | result : \n"); + ft_putnbr(-2147483648); + printf("\n"); +} diff --git a/C_Piscine_C_04/tests_C04/ex03.c b/C_Piscine_C_04/tests_C04/ex03.c new file mode 100644 index 0000000..a4ce300 --- /dev/null +++ b/C_Piscine_C_04/tests_C04/ex03.c @@ -0,0 +1,17 @@ +#include +#include "../ex03/ft_atoi.c" + +int main(void) +{ + char a[] = " \n \r \v +---+-+-42"; + char b[] = " \n --+37523093"; + char c[] = " 0"; + char d[] = " \f \t -+2147483648"; + char e[] = " \f\f asd345"; + + printf("Test\nexpected : -42 | result : %d\n", ft_atoi(a)); + printf("Test\nexpected : 37523093 | result : %d\n", ft_atoi(b)); + printf("Test\nexpected : 0 | result : %d\n", ft_atoi(c)); + printf("Test\nexpected : -2147483648 | result : %d\n", ft_atoi(d)); + printf("Test\nexpected : 0 | result : %d\n", ft_atoi(e)); +} diff --git a/C_Piscine_C_04/tests_C04/ex04.c b/C_Piscine_C_04/tests_C04/ex04.c new file mode 100644 index 0000000..5d53dec --- /dev/null +++ b/C_Piscine_C_04/tests_C04/ex04.c @@ -0,0 +1,31 @@ +#include +#include "../ex04/ft_putnbr_base.c" + +int main(void) +{ + char poney[] = "poneyvif"; + char deci[] = "0123456789"; + char hexa[] = "0123456789abcdef"; + char bin[] = "01"; + char strange[] = "102310"; + char strange2[] = "1234+56"; + char strange3[] = ""; + + printf("\nTest\nexpected : 128 | result : \n"); + ft_putnbr_base(128, deci); + printf("\nTest\nexpected : -2b | result : \n"); + ft_putnbr_base(-43, hexa); + printf("\nTest\nexpected : -80000000 | result : \n"); + ft_putnbr_base(-2147483648, hexa); + printf("\nTest\nexpected : 1101 | result : \n"); + ft_putnbr_base(13, bin); + printf("\nTest\nexpected : opoooyyf | result : \n"); + ft_putnbr_base(2134823, poney); + printf("\nTest\nexpected : | result : \n"); + ft_putnbr_base(2134823, strange); + printf("\nTest\nexpected : | result : \n"); + ft_putnbr_base(4325, strange2); + printf("\nTest\nexpected : | result : \n"); + ft_putnbr_base(21348, strange3); + printf("\n"); +} diff --git a/C_Piscine_C_04/tests_C04/ex05.c b/C_Piscine_C_04/tests_C04/ex05.c new file mode 100644 index 0000000..4001d4e --- /dev/null +++ b/C_Piscine_C_04/tests_C04/ex05.c @@ -0,0 +1,43 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ex05.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: tkondrac +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/08/11 14:32:06 by tkondrac #+# #+# */ +/* Updated: 2021/08/11 17:34:21 by tkondrac ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include +#include "../ex05/ft_atoi_base.c" + +int main(void) +{ + char a[] = " \n \r \v +---+-+-42"; + char b[] = " \n --+2b"; + char c[] = " 0"; + char d[] = " \f \t -+2147483648"; + char e[] = " \f\f asd345"; + char f[] = " \f\f poneyvif"; + char g[] = " \f\f -0123456789"; + + char poney[] = "poneyvif"; + char deci[] = "0123456789"; + char hexa[] = "0123456789abcdef"; + char bin[] = "01"; + char strange[] = "1b231b"; +// char strange2[] = "1234+56"; +// char strange3[] = ""; + + printf("Test\nexpected : -42 | result : %d\n", ft_atoi_base(a, deci)); + printf("Test\nexpected : 43 | result : %d\n", ft_atoi_base(b, hexa)); + printf("Test\nexpected : 0 | result : %d\n", ft_atoi_base(c, bin)); + printf("Test\nexpected : -2147483648 | result : %d\n", ft_atoi_base(d, deci)); + printf("Test\nexpected : 0 | result : %d\n", ft_atoi_base(e, deci)); + printf("Test\nexpected : 2 | result : %d\n", ft_atoi_base(b, deci)); + printf("Test\nexpected : 342391 | result : %d\n", ft_atoi_base(f, poney)); + printf("Test\nexpected : -123456789 | result : %d\n", ft_atoi_base(g, deci)); + printf("Test\nexpected : 0 | result : %d\n", ft_atoi_base(a, strange)); +} diff --git a/C_Piscine_C_04/tests_C04/main.sh b/C_Piscine_C_04/tests_C04/main.sh new file mode 100755 index 0000000..68e66ec --- /dev/null +++ b/C_Piscine_C_04/tests_C04/main.sh @@ -0,0 +1,8 @@ +#!/bin/sh +test=$1 +set -e +norminette -R CheckForbiddenSourceHeader ../$test/ft_*.c +gcc -Wall -Wextra -Werror -o a.out $test.c +#gcc -o a.out $test.c +./a.out +rm -f a.out