diff options
| author | Charles <sircharlesaze@gmail.com> | 2019-07-07 15:29:30 +0200 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2019-07-07 15:29:30 +0200 |
| commit | a2ef228b981df5ad417a0e8377e1e832002a7644 (patch) | |
| tree | 32827b5be808bf3123d46856bb753fc190fd3611 /c04 | |
| parent | 79f8ba0b777f3361002ed2ae0c6c6f8f353ca731 (diff) | |
| download | piscine-a2ef228b981df5ad417a0e8377e1e832002a7644.tar.gz piscine-a2ef228b981df5ad417a0e8377e1e832002a7644.tar.bz2 piscine-a2ef228b981df5ad417a0e8377e1e832002a7644.zip | |
c04/c05 testing + c06
Diffstat (limited to 'c04')
| -rw-r--r-- | c04/ex00/ft_strlen.c | 4 | ||||
| -rw-r--r-- | c04/ex01/ft_putstr.c | 4 | ||||
| -rw-r--r-- | c04/ex02/ft_putnbr.c | 15 | ||||
| -rw-r--r-- | c04/ex03/ft_atoi.c | 13 | ||||
| -rw-r--r-- | c04/ex04/ft_putnbr_base.c | 30 | ||||
| -rw-r--r-- | c04/ex05/ft_atoi_base.c | 40 | ||||
| -rw-r--r-- | c04/ft_atoi.o | bin | 0 -> 1300 bytes | |||
| -rw-r--r-- | c04/ft_putnbr.o | bin | 0 -> 1212 bytes | |||
| -rw-r--r-- | c04/ft_putnbr_base.o | bin | 0 -> 1756 bytes | |||
| -rw-r--r-- | c04/ft_putstr.o | bin | 0 -> 708 bytes | |||
| -rw-r--r-- | c04/ft_strlen.o | bin | 0 -> 652 bytes | |||
| -rw-r--r-- | c04/main.c | 20 |
12 files changed, 81 insertions, 45 deletions
diff --git a/c04/ex00/ft_strlen.c b/c04/ex00/ft_strlen.c index 271088d..4355784 100644 --- a/c04/ex00/ft_strlen.c +++ b/c04/ex00/ft_strlen.c @@ -6,11 +6,11 @@ /* By: cacharle <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/07/06 08:31:20 by cacharle #+# #+# */ -/* Updated: 2019/07/06 08:32:00 by cacharle ### ########.fr */ +/* Updated: 2019/07/06 13:14:51 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ -int ft_strlen(char *str) +int ft_strlen(char *str) { int counter; diff --git a/c04/ex01/ft_putstr.c b/c04/ex01/ft_putstr.c index e98b5a0..92b855d 100644 --- a/c04/ex01/ft_putstr.c +++ b/c04/ex01/ft_putstr.c @@ -6,13 +6,13 @@ /* By: cacharle <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/07/06 07:22:38 by cacharle #+# #+# */ -/* Updated: 2019/07/06 08:34:03 by cacharle ### ########.fr */ +/* Updated: 2019/07/06 13:15:17 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include <unistd.h> -void ft_putstr(char *str) +void ft_putstr(char *str) { while (*str) { diff --git a/c04/ex02/ft_putnbr.c b/c04/ex02/ft_putnbr.c index 4ba6a0e..020dfa6 100644 --- a/c04/ex02/ft_putnbr.c +++ b/c04/ex02/ft_putnbr.c @@ -6,7 +6,7 @@ /* By: cacharle <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/07/06 07:24:04 by cacharle #+# #+# */ -/* Updated: 2019/07/06 08:47:01 by cacharle ### ########.fr */ +/* Updated: 2019/07/06 15:09:46 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,21 +19,21 @@ void ft_putchar(char c) void ft_putnbr(int nb) { - int i; + int i; int rev_digits[100]; unsigned int nbu; if (nb == 0) { ft_putchar('0'); - return; + return ; } + nbu = nb; if (nb < 0) { ft_putchar('-'); nbu = -nb; - } else - nbu = nb; + } i = 0; while (nbu > 0) { @@ -42,8 +42,5 @@ void ft_putnbr(int nb) i++; } while (i > 0) - { - i--; - ft_putchar(rev_digits[i] + '0'); - } + ft_putchar(rev_digits[--i] + '0'); } diff --git a/c04/ex03/ft_atoi.c b/c04/ex03/ft_atoi.c index 10f6b07..a26308e 100644 --- a/c04/ex03/ft_atoi.c +++ b/c04/ex03/ft_atoi.c @@ -6,7 +6,7 @@ /* By: cacharle <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/07/06 07:31:38 by cacharle #+# #+# */ -/* Updated: 2019/07/06 10:23:20 by cacharle ### ########.fr */ +/* Updated: 2019/07/06 15:48:43 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -31,29 +31,22 @@ int ft_atoi(char *str) int j; while (*str == ' ' || *str == '\t' || *str == '\n' - || *str == '\v' || *str == '\f' || *str == '\r') + || *str == '\v' || *str == '\f' || *str == '\r') str++; is_negative = 0; - /*printf("> %s\n", str);*/ while (*str == '-' || *str == '+') { if (*str == '-') is_negative = !is_negative; str++; } - /*printf("> %s\n", str);*/ nb = 0; i = 0; while (str[i] >= '0' && str[i] <= '9') i++; j = 0; while (str[j] >= '0' && str[j] <= '9') - { - /*printf("%d i, %d nb\n", i, nb);*/ - i--; - nb += pow10(i) * (str[j] - '0'); - j++; - } + nb += pow10(--i) * (str[j++] - '0'); if (is_negative) nb = -nb; return (nb); diff --git a/c04/ex04/ft_putnbr_base.c b/c04/ex04/ft_putnbr_base.c index 764c42b..da6fb22 100644 --- a/c04/ex04/ft_putnbr_base.c +++ b/c04/ex04/ft_putnbr_base.c @@ -6,7 +6,7 @@ /* By: cacharle <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/07/06 07:47:44 by cacharle #+# #+# */ -/* Updated: 2019/07/06 11:12:25 by cacharle ### ########.fr */ +/* Updated: 2019/07/07 12:30:16 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -48,28 +48,30 @@ int my_strlen(char *str) void ft_putnbr_base(int nbr, char *base) { - int radix; - int i; - int nb; - char rev_digits[1024]; + int radix; + int i; + unsigned int nbu; + char rev_digits[1024]; if (!check_base(base)) - return; + return ; radix = my_strlen(base); + nbu = nbr; + if (nbr < 0) + { + write(1, "-", 1); + nbu = -nbr; + } i = 0; - /*printf("\n%d base %d (%s)\n", nbr, radix, base);*/ - while (nbr > 0) + while (nbu > 0) { - /*printf("%d %d %c\n", nbr, nbr % radix, base[nbr % radix]);*/ - rev_digits[i] = base[nbr % radix]; - nbr /= radix; + rev_digits[i] = base[nbu % radix]; + nbu /= radix; i++; } - /*for (int k = 0; k < 10; k++)*/ - /*printf("%d ", rev_digits[k]);*/ while (i > 0) { i--; - write(1, rev_digits + i, 1); + write(1, rev_digits + i, 1); } } diff --git a/c04/ex05/ft_atoi_base.c b/c04/ex05/ft_atoi_base.c index 5de5f81..9a89fc1 100644 --- a/c04/ex05/ft_atoi_base.c +++ b/c04/ex05/ft_atoi_base.c @@ -6,10 +6,36 @@ /* By: cacharle <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/07/06 08:07:17 by cacharle #+# #+# */ -/* Updated: 2019/07/06 12:47:25 by cacharle ### ########.fr */ +/* Updated: 2019/07/07 13:26:28 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ +int check_the_base(char *base) +{ + int i; + int j; + + i = 0; + while (base[i]) + { + if (base[i] == '-' || base[i] == '+' || base[i] == ' ' + || base[i] == '\t' || base[i] == '\n' || base[i] == '\v' + || base[i] == '\f' || base[i] == '\r') + return (0); + j = 0; + while (base[j]) + { + if (j != i && base[j] == base[i]) + return (0); + j++; + } + i++; + } + if (i < 2) + return (0); + return (1); +} + int my_pow(int base, int exponent) { int accumulator; @@ -33,23 +59,25 @@ int position_in_base(char digit, char *base) return (i); } -int ft_atoi_base(char *str, char *base) +int ft_atoi_base(char *str, char *base) { int radix; int i; int j; int nb; + if (!check_the_base(base)) + return (0); nb = 0; radix = 0; - while (base[++radix]); + while (base[radix]) + radix++; i = 0; - while (str[++i]); - printf("%s base %d (%s)\n", str, radix, base); + while (str[i]) + i++; j = 0; while (--i >= 0) { - printf("%c: %d * (%d^%d) = %d\n", str[i], position_in_base(str[i], base), radix, i, my_pow(radix, i) * position_in_base(str[j], base)); nb += my_pow(radix, i) * position_in_base(str[j], base); j++; } diff --git a/c04/ft_atoi.o b/c04/ft_atoi.o Binary files differnew file mode 100644 index 0000000..8c7622b --- /dev/null +++ b/c04/ft_atoi.o diff --git a/c04/ft_putnbr.o b/c04/ft_putnbr.o Binary files differnew file mode 100644 index 0000000..4d8c488 --- /dev/null +++ b/c04/ft_putnbr.o diff --git a/c04/ft_putnbr_base.o b/c04/ft_putnbr_base.o Binary files differnew file mode 100644 index 0000000..db3788f --- /dev/null +++ b/c04/ft_putnbr_base.o diff --git a/c04/ft_putstr.o b/c04/ft_putstr.o Binary files differnew file mode 100644 index 0000000..099c1e4 --- /dev/null +++ b/c04/ft_putstr.o diff --git a/c04/ft_strlen.o b/c04/ft_strlen.o Binary files differnew file mode 100644 index 0000000..33f0ca0 --- /dev/null +++ b/c04/ft_strlen.o @@ -17,12 +17,14 @@ int main() ft_putstr(s); printf("\n"); + printf("----------------------\n"); ft_putnbr(0); printf("\n"); ft_putnbr(42); printf("\n"); ft_putnbr(-42); printf("\n"); ft_putnbr(INT_MAX); printf("\n"); ft_putnbr(INT_MIN); printf("\n"); + printf("----------------------\n"); char *s_happypath = "42"; char *s_happypathn = "-42"; char *s_int0 = "0"; @@ -33,6 +35,7 @@ int main() char *pos = "++--+++--4"; char *garbage_tail = "76iqu21#!@"; char *all = "\n\t \v++++---12341234#3%^@"; + char *subject_test = " ---+--+1234ab567"; printf("%d\n", ft_atoi(s_happypath)); printf("%d\n", ft_atoi(s_happypathn)); printf("%d\n", ft_atoi(s_int0)); @@ -43,18 +46,31 @@ int main() printf("%d\n", ft_atoi(pos)); printf("%d\n", ft_atoi(garbage_tail)); printf("%d\n", ft_atoi(all)); + printf("%d\n", ft_atoi(subject_test)); printf("----------------------\n"); - // doit gerer les nombres negatifs ?? ft_putnbr_base(42, "0123456789"); printf("\n"); + ft_putnbr_base(-42, "0123456789"); printf("\n"); ft_putnbr_base(42, "01"); printf("\n"); + ft_putnbr_base(-42, "01"); printf("\n"); ft_putnbr_base(42, "0123456789abcdef"); printf("\n"); ft_putnbr_base(42, "01234567"); printf("\n"); - ft_putnbr_base(INT_MAX - 5, "01"); printf("\n"); + ft_putnbr_base(INT_MAX, "0123456789abcdef"); printf("\n"); + ft_putnbr_base(INT_MIN, "0123456789abcdef"); printf("\n"); ft_putnbr_base(INT_MAX, ""); ft_putnbr_base(INT_MAX, "a"); + ft_putnbr_base(INT_MAX, "abb"); + ft_putnbr_base(INT_MAX, "-0123456789"); printf("----------------------\n"); printf("%d\n", ft_atoi_base("111000", "01")); printf("%d\n", ft_atoi_base("ff", "0123456789abcdef")); + printf("%d\n", ft_atoi_base("52", "01234567")); + printf("%d\n", ft_atoi_base("2a", "0123456789abcdef")); + printf("%d\n", ft_atoi_base("7fffffff", "0123456789abcdef")); + printf("%d\n", ft_atoi_base("ff", "0123-456789abcdef")); + printf("%d\n", ft_atoi_base("ff", "01\r23456789abcdef")); + printf("%d\n", ft_atoi_base("ff", "abcc")); + printf("%d\n", ft_atoi_base("ff", "")); + printf("%d\n", ft_atoi_base("ff", "a")); } |
