commit b54514af5c58a930881cc05f3a56c1ccc1795e92 Author: lclerel- lclerel- Date: Mon Mar 9 11:08:19 2026 +0100 Exos diff --git a/ex0/ft_iterative_factorial.c b/ex0/ft_iterative_factorial.c new file mode 100644 index 0000000..eaaeb64 --- /dev/null +++ b/ex0/ft_iterative_factorial.c @@ -0,0 +1,86 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_iterative_factorial.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: lclerel- +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2026/03/09 10:08:57 by lclerel- #+# #+# */ +/* Updated: 2026/03/09 10:33:07 by lclerel- ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include + +void ft_putnbr(int nb) +{ + char value; + + if (nb == -2147483648) + { + write(1, "-2147483648", 11); + return ; + } + if (nb < 0) + { + write(1, "-", 1); + nb = -nb; + } + if (nb > 9) + { + ft_putnbr(nb / 10); + } + value = nb % 10 + '0'; + write(1, &value, 1); +} + +int ft_iterative_factorial(int nb) +{ + int res; + + res = 1; + if (nb < 0) + return (0); + if (nb == 0 || nb == 1) + return (1); + while (nb > 1) + { + res = res * nb; + nb--; + } + return (res); +} + +/*int main(void) +{ + int nb; + + write(1, "Test avec factoriel de 5:", 25); + write(1, "\n", 1); + nb = ft_iterative_factorial(5); + ft_putnbr(nb); + write(1, "\n", 1); + write(1, "Test avec factoriel de 10:", 26); + write(1, "\n", 1); + nb = ft_iterative_factorial(10); + ft_putnbr(nb); + write(1, "\n", 1); + write(1, "Test avec factoriel de 20:", 26); + write(1, "\n", 1); + nb = ft_iterative_factorial(20); + ft_putnbr(nb); + write(1, "\n", 1); + write(1, "(20 depasse l'int limit, resultat negatif)", 42); + write(1, "\n", 1); + write(1, "Test avec factoriel de 0:", 25); + write(1, "\n", 1); + nb = ft_iterative_factorial(0); + ft_putnbr(nb); + write(1, "\n", 1); + write(1, "Test avec aucune factoriel:", 27); + write(1, "\n", 1); + nb = ft_iterative_factorial(-14); + ft_putnbr(nb); + write(1, "\n", 1); + return (0); +}*/ diff --git a/ex1/ft_recursive_factorial.c b/ex1/ft_recursive_factorial.c new file mode 100644 index 0000000..f6fe83d --- /dev/null +++ b/ex1/ft_recursive_factorial.c @@ -0,0 +1,78 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_recursive_factorial.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: lclerel- +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2026/03/09 09:57:06 by lclerel- #+# #+# */ +/* Updated: 2026/03/09 10:06:20 by lclerel- ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include + +void ft_putnbr(int nb) +{ + char value; + + if (nb == -2147483648) + { + write(1, "-2147483648", 11); + return ; + } + if (nb < 0) + { + write(1, "-", 1); + nb = -nb; + } + if (nb > 9) + { + ft_putnbr(nb / 10); + } + value = nb % 10 + '0'; + write(1, &value, 1); +} + +int ft_recursive_factorial(int nb) +{ + if (nb < 0) + return (0); + if (nb == 0 || nb == 1) + return (1); + return (nb * ft_recursive_factorial(nb -1)); +} + +/*int main(void) +{ + int nb; + + write(1, "Test avec factoriel de 5:", 25); + write(1, "\n", 1); + nb = ft_recursive_factorial(5); + ft_putnbr(nb); + write(1, "\n", 1); + write(1, "Test avec factoriel de 10:", 26); + write(1, "\n", 1); + nb = ft_recursive_factorial(10); + ft_putnbr(nb); + write(1, "\n", 1); + write(1, "Test avec factoriel de 20:", 26); + write(1, "\n", 1); + nb = ft_recursive_factorial(20); + ft_putnbr(nb); + write(1, "\n", 1); + write(1, "(20 depasse l'int limit, resultat negatif)", 42); + write(1, "\n", 1); + write(1, "Test avec factoriel de 0:", 25); + write(1, "\n", 1); + nb = ft_recursive_factorial(0); + ft_putnbr(nb); + write(1, "\n", 1); + write(1, "Test avec aucune factoriel:", 27); + write(1, "\n", 1); + nb = ft_recursive_factorial(-14); + ft_putnbr(nb); + write(1, "\n", 1); + return (0); +}*/ diff --git a/ex2/ft_iterative_power.c b/ex2/ft_iterative_power.c new file mode 100644 index 0000000..a3379d2 --- /dev/null +++ b/ex2/ft_iterative_power.c @@ -0,0 +1,81 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_iterative_power.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: lclerel- +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2026/03/09 10:22:48 by lclerel- #+# #+# */ +/* Updated: 2026/03/09 10:32:44 by lclerel- ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include + +void ft_putnbr(int nb) +{ + char value; + + if (nb == -2147483648) + { + write(1, "-2147483648", 11); + return ; + } + if (nb < 0) + { + write(1, "-", 1); + nb = -nb; + } + if (nb > 9) + { + ft_putnbr(nb / 10); + } + value = nb % 10 + '0'; + write(1, &value, 1); +} + +int ft_iterative_power(int nb, int power) +{ + int res; + + res = 1; + if (power < 0) + return (0); + if (power == 0) + return (1); + while (power > 0) + { + res = res * nb; + power--; + } + return (res); +} + +/*int main(void) +{ + int nb; + + write(1, "Test avec puissance de 5:", 25); + write(1, "\n", 1); + nb = ft_iterative_power(5, 5); + ft_putnbr(nb); + write(1, "\n", 1); + write(1, "Test avec puissance de 10:", 26); + write(1, "\n", 1); + nb = ft_iterative_power(10, 10); + ft_putnbr(nb); + write(1, "\n", 1); + write(1, "Test avec puissance de 20:", 26); + write(1, "\n", 1); + nb = ft_iterative_power(20, 20); + ft_putnbr(nb); + write(1, "\n", 1); + write(1, "(20 depasse l'int limit, resultat mis a 0)", 42); + write(1, "\n", 1); + write(1, "Test avec puissance de 0:", 25); + write(1, "\n", 1); + nb = ft_iterative_power(0, 0); + ft_putnbr(nb); + write(1, "\n", 1); + return (0); +}*/ diff --git a/ex3/ft_recursive_power.c b/ex3/ft_recursive_power.c new file mode 100644 index 0000000..9bec92d --- /dev/null +++ b/ex3/ft_recursive_power.c @@ -0,0 +1,73 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_recursive_power.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: lclerel- +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2026/03/09 10:34:20 by lclerel- #+# #+# */ +/* Updated: 2026/03/09 10:40:43 by lclerel- ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include + +void ft_putnbr(int nb) +{ + char value; + + if (nb == -2147483648) + { + write(1, "-2147483648", 11); + return ; + } + if (nb < 0) + { + write(1, "-", 1); + nb = -nb; + } + if (nb > 9) + { + ft_putnbr(nb / 10); + } + value = nb % 10 + '0'; + write(1, &value, 1); +} + +int ft_recursive_power(int nb, int power) +{ + if (power < 0) + return (0); + if (power == 0) + return (1); + return (nb * ft_recursive_power(nb, power -1)); +} + +int main(void) +{ + int nb; + + write(1, "Test avec puissance de 5:", 25); + write(1, "\n", 1); + nb = ft_recursive_power(5, 5); + ft_putnbr(nb); + write(1, "\n", 1); + write(1, "Test avec puissance de 10:", 26); + write(1, "\n", 1); + nb = ft_recursive_power(10, 10); + ft_putnbr(nb); + write(1, "\n", 1); + write(1, "Test avec puissance de 20:", 26); + write(1, "\n", 1); + nb = ft_recursive_power(20, 20); + ft_putnbr(nb); + write(1, "\n", 1); + write(1, "(20 depasse l'int limit, resultat mis a 0)", 42); + write(1, "\n", 1); + write(1, "Test avec puissance de 0:", 25); + write(1, "\n", 1); + nb = ft_recursive_power(0, 0); + ft_putnbr(nb); + write(1, "\n", 1); + return (0); +} diff --git a/ex4/ft_fibonacci.c b/ex4/ft_fibonacci.c new file mode 100644 index 0000000..12e1141 --- /dev/null +++ b/ex4/ft_fibonacci.c @@ -0,0 +1,73 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_fibonacci.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: lclerel- +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2026/03/09 10:48:57 by lclerel- #+# #+# */ +/* Updated: 2026/03/09 11:06:15 by lclerel- ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include + +void ft_putnbr(int nb) +{ + char value; + + if (nb == -2147483648) + { + write(1, "-2147483648", 11); + return ; + } + if (nb < 0) + { + write(1, "-", 1); + nb = -nb; + } + if (nb > 9) + { + ft_putnbr(nb / 10); + } + value = nb % 10 + '0'; + write(1, &value, 1); +} + +int ft_fibonacci(int index) +{ + if (index < 0) + return (-1); + if (index == 0) + return (0); + if (index == 1) + return (1); + return (ft_fibonacci(index - 1) + ft_fibonacci(index - 2)); +} + +/*int main(void) +{ + int nb; + + write(1, "Test avec index de 5:", 22); + write(1, "\n", 1); + nb = ft_fibonacci(5); + ft_putnbr(nb); + write(1, "\n", 1); + write(1, "Test avec index de 10:", 23); + write(1, "\n", 1); + nb = ft_fibonacci(10); + ft_putnbr(nb); + write(1, "\n", 1); + write(1, "Test avec index de -1:", 23); + write(1, "\n", 1); + nb = ft_fibonacci(-1); + ft_putnbr(nb); + write(1, "\n", 1); + write(1, "Test avec index de 30:", 23); + write(1, "\n", 1); + nb = ft_fibonacci(30); + ft_putnbr(nb); + write(1, "\n", 1); + return (0); +}*/