From 4d55e3b2c16c25725750a842eac77ee851240c3e Mon Sep 17 00:00:00 2001 From: lclerel- lclerel- Date: Mon, 9 Mar 2026 14:05:42 +0100 Subject: [PATCH] Exos --- ex0/ft_iterative_factorial.c | 86 ++++++++++++++++++++++++++++++++++++ ex1/ft_recursive_factorial.c | 77 ++++++++++++++++++++++++++++++++ ex2/ft_iterative_power.c | 80 +++++++++++++++++++++++++++++++++ ex3/ft_recursive_power.c | 72 ++++++++++++++++++++++++++++++ ex4/ft_fibonacci.c | 72 ++++++++++++++++++++++++++++++ 5 files changed, 387 insertions(+) create mode 100644 ex0/ft_iterative_factorial.c create mode 100644 ex1/ft_recursive_factorial.c create mode 100644 ex2/ft_iterative_power.c create mode 100644 ex3/ft_recursive_power.c create mode 100644 ex4/ft_fibonacci.c diff --git a/ex0/ft_iterative_factorial.c b/ex0/ft_iterative_factorial.c new file mode 100644 index 0000000..d16c10e --- /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 13:07: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_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..9330cd6 --- /dev/null +++ b/ex1/ft_recursive_factorial.c @@ -0,0 +1,77 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_recursive_factorial.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: lclerel- +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2026/03/09 09:57:06 by lclerel- #+# #+# */ +/* Updated: 2026/03/09 13:09:08 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'; +}*/ + +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..e9118c4 --- /dev/null +++ b/ex2/ft_iterative_power.c @@ -0,0 +1,80 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_iterative_power.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: lclerel- +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2026/03/09 10:22:48 by lclerel- #+# #+# */ +/* Updated: 2026/03/09 13:09: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'; +}*/ + +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..2792cdc --- /dev/null +++ b/ex3/ft_recursive_power.c @@ -0,0 +1,72 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_recursive_power.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: lclerel- +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2026/03/09 10:34:20 by lclerel- #+# #+# */ +/* Updated: 2026/03/09 13:09:22 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'; +}*/ + +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..88c3165 --- /dev/null +++ b/ex4/ft_fibonacci.c @@ -0,0 +1,72 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_fibonacci.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: lclerel- +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2026/03/09 10:48:57 by lclerel- #+# #+# */ +/* Updated: 2026/03/09 13:09:29 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'; +}*/ + +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); +}*/