From 1b8ce2a594a2e71a425dff58f1b432921d3375f7 Mon Sep 17 00:00:00 2001
From: jonas <jonas.stirnemann@etu.hesge.ch>
Date: Wed, 17 Nov 2021 11:38:20 +0100
Subject: [PATCH] Added basic stack

---
 jmaths/bin/main           | Bin 16464 -> 16488 bytes
 jmaths/src/jmath.c        |  19 ++++
 jmaths/src/main.c         |  13 +--
 queen_backtrack/kreate.py | 196 ++++++++++++++++++++++++++++++++++++++
 stack/Makefile            |  36 +++++++
 stack/bin/main            | Bin 0 -> 21544 bytes
 stack/include/stack.h     |  39 ++++++++
 stack/kreate.py           | 196 ++++++++++++++++++++++++++++++++++++++
 stack/src/main.c          |  14 +++
 stack/src/stack.c         |  48 ++++++++++
 10 files changed, 555 insertions(+), 6 deletions(-)
 create mode 100644 queen_backtrack/kreate.py
 create mode 100644 stack/Makefile
 create mode 100755 stack/bin/main
 create mode 100644 stack/include/stack.h
 create mode 100644 stack/kreate.py
 create mode 100644 stack/src/main.c
 create mode 100644 stack/src/stack.c

diff --git a/jmaths/bin/main b/jmaths/bin/main
index b985017ec3177668cc94ef1ecbe6dfa516c6d705..3d1a5db6978452da79edfad815e7bd8230d71315 100755
GIT binary patch
delta 1246
zcmcc6!1$tpae@Zpiiw){IZN3Yz@T)pAfrBK1v8k#P_fyQ(VdaA1j1t|nLLx}zQ{^v
zi{{n(Q`-DLIEa@Adj>w>+R3xIhdGOvKaGun!K0V=Ju8T^y|tND(2J3?v-XEaXX%Ft
zv6EeePI0dK`~UwZegWP`lO=@ba@+7QFzf&s{^Hi;1H!sGB5?kqKmY%G^oHK>=yko|
z(Rs|H*Omt^H|@{=|1T0JONyu%Kjda$c+Kw7%X*KSfuY;?j7R68&T}5Uwl}$923!64
z|G(Mw3}bWc8P2*rFS!3qekdvt)5ycX@QFX};3s}T*B77o1$;pSYcW_f@<f^ke;tU(
zJK)i4+Xga<k%58X#hu^(|G(J&`~QEBPS*z>-Jv%;x<QV+=Fxfl#Z8cVJ6%7#nEo4N
z0TVCJ<OWf3?jX44s>uqXqK2LzKG?%iAj3?t8#Wzgm?+pV#_q}Wq7pp+xEL6AfF1JV
z*JMRe5zVh40kB~=e*ORdV)HMU%RsI={v!M@nE&C$tjP~VB^d=khUjbr=>Z#33sMg9
zKzHZ|NC<=Fz~&`_%(IznCnmwD4Awkza-o=ndInrG8-`{pkQ`X^tH~S0B%BZa{Qv*t
z;WRyd`4*5U1HZfr1H)&2xnGXqKE1ZxY77jHVV<4W978=jzdD9EcK!+V=+&)JV_*pO
z(fsSt{D$Mj{muWx9&v0^Fk!3*B|u&V28Ivs{{LUWz`zjj{{R0A3=9kj@BjaQ!N9<<
z;r;*r6Brm6W`6kppMjBq;pT_`{}mV+7{osQ|L?%az@Yi@|NjI=1_qH&|Nl2IGBAXE
z`u~3cBLl;xPyhd)U}Ru8@b&-y7mN%H2H*bwH(&z0mq7$VF)&sIO<t`i$|y1UprSaV
z!{nQa>WmeW8I{B(3*P<z9{^PaqGT8t7<w2O7$#0ORFY@hI5|*BUh&-f|Nn(SlCFFL
zZA{L*Y+gL<91IK$AhmB87#I#tE>x0c<zZxC=$SlGNt#uMk%3{&<c&(otRajH438$?
zRFY;bVPs&qF!`sFGv^*g28JJ>|Nm#*9H=bKHMv9AgE3?CMcw_(j3tvN8t!LIm>g)-
z&zLd!p;0+w<m5=>c*YNtcN*(6x=em)tSu_UAi&@z1ab@m1K3Rr3=Eu;1x>^~MVS~F
zK(ddZ!vCRRAO#g~fr`gLG&9IU#ZL-C1RNj~gYx7;6LCo!CI$vUCP@YXm@rh<WAZ{1
zamFN&8ph(y7fqy@SbUs)gEqf5d%(E)g2e-7#@5LjZS*-a#333oCcm_4XDpdqXsa){
nLJ=Ycqc3dUX#1a$@x<hf_U4=nrVz=#$sg^_8T%${I;aBxv5~0!

delta 1320
zcmaFSz<8m7ae@Zpgo&E>IYZeQz#w$8AfrBK05h1w5U|;k(VdYq2f|~>nLLx}zQ~dt
ziyvMvu##!=S-C&T_M1K5?uwYrJ<M6W{BCRv3?99_=UG9N?eWd5f?kZ1lY|a%?*04!
z|0jL{-mjCjh39hn^Dr>%02%q>?c~eCx;pA`{?<SL|9kX?-tg#kz2MP#%%j&<9xk`?
z&;S1~N+#=wsMLSqW?*>D?$OKok(+^`+xLt|=b_GX9=*12xM2qS{`vpE+4T%#bL|<<
zx;-!CK;~+@KJe&teUQfg{=g>>el6DrAQw&HVPN>gA9wH*zo6@jPy7PDAcD0GEE;(t
z&4a%VMC2Xt=(U{*GM$lufx+>````cnzc}^#|9_By9^IigJi0*+zUI++{KXrPU7fBU
zUaSJiW3^OavVf>Wb}G!g7rh{rFjKmHKR~=51Cj>^Q!dCl50Iix*9U0Ut%6yn0g}gR
z-8}Bef}-Lnf*|ui?tj4zQi@?82S^@l-|Juh|Gzl)3+6qL*N(pk{|n}Sc(E2Ffz={q
zuthpYxEL6AfGwH;QVI&1?og<wz;a+qN<fzQPYx85kTC-(!)oFhE|AmftKlX}f|R0|
z=nIkqoA~$V|Nr20<<af?BgI3TM^%G?fuV%;#g(7`|DQaZHsLeB+%Ly)pI+P5Y77jH
zVV<4W978=jzdD9EcK!+V=+&L0#=sElqxsjP`3=X5|3Ci!_c-{MxkTP@vxfK$j>!e=
z3Y!#67*j#Hfro*C;lsQC{}(VYFa*5+|NjI714F|5|NkE_FfeR*|Nnmn0|Ud%5C8xF
zU|?Xl`QiV62}TA6v5)`%TQD*(Fn;>~KZ22g!SU1o{}qf34D&zz|G$8dfnmYd|Njp#
zGB5~y`~RO~@<K&*Nrm_S|LcRi=E5!jqEr|d7)%%#7(6CFR8*I2c=!K5SQsS5z`!5^
z@+<=bL&ao8C2_`?lP#6x8Fx;ORFY@BHhHF!H0v7%28M-`cPdG<@-Q+m9GrYpNtxAz
zk%8g+WJYCa)(}Pph8vR=m7O`~fTHfp|NpF;3zfyWCKs^lOzzP2VD#90QFlKxqtE1t
zhWi;ECI=ezGkQ#ZXjIPVHaXHbp7FxuoyPi%hLc|!Yr6_CNHGXFK%E7p1eh2Ygct-E
z&I>~X{xd;nQK)z!R6GtM%pf(n&_tY3Zt_JFaYpmW3r)mXotYRI6ee$E5@w7AiL&M~
zF)%1i-pC}fnbDM)X)~w!ea6WLm{>Qzuz0}Cm^%5SjXtM`IK(uM$&9w`j5(7#ZS@5g
pC_=<w^oGqRZT~YeZkT-1-kkFVD0mqd7&<3&I+!ySPIh!q2LRbi?L+_o

diff --git a/jmaths/src/jmath.c b/jmaths/src/jmath.c
index 45560d8..1894d71 100644
--- a/jmaths/src/jmath.c
+++ b/jmaths/src/jmath.c
@@ -44,6 +44,25 @@ uint64_t GCD(uint64_t a, uint64_t b)
 uint64_t LCM(uint64_t a, uint64_t b)
 {
 	return( a / (GCD(a, b)) * b);
+}
+
+/**
+ * @brief Get the Lowest Common Multiplier Recursivly
+ * 
+ * @param a
+ * @param b
+ * @return int64_t
+ */
+uint64_t LCMR(uint64_t ma, uint64_t mb, uint64_t a, uint64_t b)
+{
+	// STOP
+	if(ma == mb){return ma;}
+	else if(ma > mb){ LCMR(); }
+
+
+
+
+	
 }
 
 
diff --git a/jmaths/src/main.c b/jmaths/src/main.c
index 90a0ef6..3b9b414 100644
--- a/jmaths/src/main.c
+++ b/jmaths/src/main.c
@@ -57,12 +57,13 @@ int main()
 	printf("COMPUTED FACTORIAL IN %lfs\n", timeT);
 	printf("FACT(%ld) = %ld \n", a, r);
 	
-	t = clock();
-	r = fibo(b);
-	t = clock() - t;
-	timeT = ((double)t) / CLOCKS_PER_SEC;
-	printf("COMPUTED FIBO IN %lfs\n",  timeT);
-	printf("FACT(%ld) = %ld \n", a, r);
+	// // FIBO
+	// t = clock();
+	// r = fibo(b);
+	// t = clock() - t;
+	// timeT = ((double)t) / CLOCKS_PER_SEC;
+	// printf("COMPUTED FIBO IN %lfs\n",  timeT);
+	// printf("FACT(%ld) = %ld \n", a, r);
 
 
 	return 0;
diff --git a/queen_backtrack/kreate.py b/queen_backtrack/kreate.py
new file mode 100644
index 0000000..40079e0
--- /dev/null
+++ b/queen_backtrack/kreate.py
@@ -0,0 +1,196 @@
+# * PROJ
+# * Author: Jonas S.
+# * Date: 11/07/21
+# ! OBJECTIVE
+# ? CREATE A BASIC RUNNING PROJECT 
+# ? CREATE SIMPLE C OR HEADER FILE WITH HEADERS
+# ? CREATE MAKEFILE
+# ! NEED COLORAMA AND OS
+
+
+
+
+import colorama
+from colorama import Fore, Back
+
+
+#HARD CODED STUFF
+NAME = "Jonas S."
+colorama.init()
+
+# ! FILE CREATION
+def createFile(fileName, content):
+	with open(f"{fileName}", 'w', encoding = 'utf-8') as f:
+		f.write(content)
+
+def createHeaderFile(fileName):
+	from datetime import datetime
+	import os
+	from os import mkdir
+
+	now = datetime.now() # current date and time
+
+	content =   (
+					"/*\n"
+					f"\t* HEADER {fileName.upper()}\n"
+					f"\t* Author : {NAME}\n"
+					f"\t* Date   : {now.strftime('%d/%m/%Y')}\n"
+					"\t! DESCRIPTION\n"
+					"*/\n\n"
+					f"#ifndef _{fileName.upper()}_H_\n"
+					f"#define _{fileName.upper()}_H_\n\n"
+					"// DEFINES\n\n"
+					"// PROTOTYPE FUNCTIONS\n\n"
+					"#endif"
+				)
+
+	if not os.path.exists('include'):
+		mkdir('include')
+	createFile(f"include/{fileName}.h", content)
+
+def createCodeFile(fileName):
+	from datetime import datetime
+	from datetime import datetime
+	import os
+	from os import mkdir
+	
+	now = datetime.now() # current date and time
+
+	content =   (
+					"/*\n"
+					f"\t* CODE {fileName.upper()}\n"
+					f"\t* Author : {NAME}\n"
+					f"\t* Date   : {now.strftime('%d/%m/%Y')}\n"
+					"\t! DESCRIPTION\n"
+					"*/\n\n"
+				)
+
+	# add basic printf if main
+	if fileName == "main":
+		content += "#include <stdio.h>\n\nint main()\n{\n\tprintf(\"ISSOU\\n\");\n\treturn 0;\n}"
+	
+	if not os.path.exists('src'):
+		mkdir('src')
+	createFile(f"src/{fileName}.c", content)
+
+def createMakefile():
+	content =   (
+					"CC       := gcc\n"
+					"CFLAGS := -Wall -Wextra -g -fsanitize=address -fsanitize=leak\n"
+					"\n"
+					"BIN     	 := bin\n"
+					"SRC     	 := src\n"
+					"INCLUDE 	 := include\n"
+					"LIBRARIES    := -lm\n"
+					"EXECUTABLE1  := main\n"
+					"\n"
+					"# ADD ALL THE SOURCES FOR EXECUTABLE1\n"
+					"SOURCES1 += $(SRC)/jrandom\n"
+					"\n"
+					".PHONY: all run clean # Specify these are not files but internal terms\n"
+					"\n"
+					"all: $(BIN)/$(EXECUTABLE1)\n"
+					"\n"
+					"run: clean all\n"
+					"	clear\n"
+					"	@echo "########## EXECUTE FIRST PROGRAM ##########"\n"
+					"	./$(BIN)/$(EXECUTABLE1)\n"
+					"\n"
+					"# # $^ -> dep\n"
+					"# # $@ -> target\n"
+					"# # $< -> premiere dep\n"
+					"# # Compiles directly the c files\n"
+					"# # Not optimal but succint and simple\n"
+					"\n"
+					"# COMPILE FIRST EXECUTABLE\n"
+					"$(BIN)/$(EXECUTABLE1): $(SRC)/$(EXECUTABLE1).c $(SOURCES)\n"
+					"	@echo "########## COMPILING FIRST EXECUTABLE ##########"\n"
+					"	$(CC) $(CFLAGS) -I $(INCLUDE) $^ -o $@ $(LIBRARIES)\n"
+					"\n"
+					"clean:\n"
+					"	@echo "########## CLEANING ##########"\n"
+					"	-rm $(BIN)/*\n"
+					"\n"
+				)
+	createFile("Makefile", content)
+
+def createDirStructure():
+	import os
+	from os import mkdir
+
+	if not os.path.exists('bin'):
+		mkdir('bin')
+	if not os.path.exists('build'):
+		mkdir('build')
+	if not os.path.exists('include'):
+		mkdir('include')
+	if not os.path.exists('src'):
+		mkdir('src')
+
+# ! MENU CREATION
+def createCompleteProject():
+	# Base structure (SRC, BUILD, INCLUDE, BIN)
+	createDirStructure()
+	print(f"{Fore.GREEN}+ BASIC STRUCTURE CREATED{Fore.RESET}")
+	# Makefile
+	createMakefile()
+	print(f"{Fore.GREEN}+ MAKEFILE CREATED{Fore.RESET}")
+	# Main 
+	createCodeFile("main")
+	print(f"{Fore.GREEN}+ MAIN.C FILE CREATE{Fore.RESET}")
+
+def createCodeHeader(name):
+	# Code
+	createCodeFile(name)
+	print(f"{Fore.GREEN}+ CODE FILE CREATED{Fore.RESET}")
+	# Header
+	createHeaderFile(name)
+	print(f"{Fore.GREEN}+ HEADER FILE CREATED{Fore.RESET}")
+
+
+
+# ! MENU
+def menu():
+	choice = input(
+	"1 - COMPLETE PROJECT                 \n"
+	"2 - CODE + HEADER                    \n"
+	"3 - CODE ONLY                        \n"
+	"4 - HEADER ONLY                      \n"
+	"5 - MAKEFILE ONLY                    \n"
+	"\n"
+
+	)
+
+	# PROJECT
+	if choice == '1': 
+		print(f"{Fore.BLUE}FULL PROJECT IS BEING CREATED.{Fore.RESET}")
+		createCompleteProject()
+
+	# CODE + HEADER
+	elif choice == '2':
+		print(f"{Fore.BLUE}A CODE AND HEADER FILE ARE BEING CREATED.{Fore.RESET}")
+		createCodeHeader(input("WHAT FILE NAME DO YOU WANT : "))		
+	
+	# CODE 
+	elif choice == '3':
+		print(f"{Fore.BLUE}A CODE FILE IS BEING CREATED.{Fore.RESET}")
+		createCodeFile(input("WHAT FILE NAME DO YOU WANT : "))
+		print(f"{Fore.GREEN}+ CODE FILE CREATED{Fore.RESET}")
+
+	# HEADER
+	elif choice == '4':
+		print(f"{Fore.BLUE}A HEADER FILE IS BEING CREATED.{Fore.RESET}")
+		createHeaderFile(input("WHAT FILE NAME DO YOU WANT : "))	
+		print(f"{Fore.GREEN}+ CODE FILE CREATED{Fore.RESET}")
+
+	# MAKEFILE
+	elif choice == '5':
+		print(f"{Fore.BLUE}A HEADER FILE IS BEING CREATED.")
+		createMakefile()		
+		print(f"{Fore.GREEN}+  MAKEFILE CREATED{Fore.RESET}")
+
+if __name__ == "__main__":
+	menu()
+
+
+
diff --git a/stack/Makefile b/stack/Makefile
new file mode 100644
index 0000000..89e596e
--- /dev/null
+++ b/stack/Makefile
@@ -0,0 +1,36 @@
+CC       := gcc
+CFLAGS := -Wall -Wextra -g -fsanitize=address -fsanitize=leak
+
+BIN     	 := bin
+SRC     	 := src
+INCLUDE 	 := include
+LIBRARIES    := -lm
+EXECUTABLE1  := main
+
+# ADD ALL THE SOURCES FOR EXECUTABLE1
+SOURCES1 += $(SRC)/jrandom
+
+.PHONY: all run clean # Specify these are not files but internal terms
+
+all: $(BIN)/$(EXECUTABLE1)
+
+run: clean all
+	clear
+	@echo "RUN MAIN"
+	./$(BIN)/$(EXECUTABLE1)
+
+# # $^ -> dep
+# # $@ -> target
+# # $< -> premiere dep
+# # Compiles directly the c files
+# # Not optimal but succint and simple
+
+# COMPILE FIRST EXECUTABLE
+$(BIN)/$(EXECUTABLE1): $(SRC)/$(EXECUTABLE1).c $(SOURCES)
+	@echo 	
+	$(CC) $(CFLAGS) -I $(INCLUDE) $^ -o $@ $(LIBRARIES)
+
+clean:
+	@echo 	
+	-rm $(BIN)/*
+
diff --git a/stack/bin/main b/stack/bin/main
new file mode 100755
index 0000000000000000000000000000000000000000..64ac03de35bd59a9847fc639b51e77501e760bf0
GIT binary patch
literal 21544
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
Ba1sCj

literal 0
HcmV?d00001

diff --git a/stack/include/stack.h b/stack/include/stack.h
new file mode 100644
index 0000000..d27e992
--- /dev/null
+++ b/stack/include/stack.h
@@ -0,0 +1,39 @@
+/*
+	* HEADER STACK
+	* Author : Jonas S.
+	* Date   : 17/11/2021
+	! STACK IMPLEMENTATION
+*/
+
+#include <stdio.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdlib.h>
+
+
+
+#ifndef _JSTACK_H_
+#define _JSTACK_H_
+
+// DEFINES
+#define MAX_CAPACITY 500
+
+typedef struct
+{	
+	int64_t top;
+	int32_t *data;
+}stack_t;
+
+// PROTOTYPE FUNCTIONS
+int32_t* create_stack();
+void stack_push(stack_t* st, int32_t val);
+int32_t stack_pop(stack_t* st);
+int32_t stack_peek(stack_t st);
+bool stack_is_full(stack_t st);
+bool stack_is_empty(stack_t st);
+void stack_destroy(stack_t* st);
+
+
+
+
+#endif
\ No newline at end of file
diff --git a/stack/kreate.py b/stack/kreate.py
new file mode 100644
index 0000000..40079e0
--- /dev/null
+++ b/stack/kreate.py
@@ -0,0 +1,196 @@
+# * PROJ
+# * Author: Jonas S.
+# * Date: 11/07/21
+# ! OBJECTIVE
+# ? CREATE A BASIC RUNNING PROJECT 
+# ? CREATE SIMPLE C OR HEADER FILE WITH HEADERS
+# ? CREATE MAKEFILE
+# ! NEED COLORAMA AND OS
+
+
+
+
+import colorama
+from colorama import Fore, Back
+
+
+#HARD CODED STUFF
+NAME = "Jonas S."
+colorama.init()
+
+# ! FILE CREATION
+def createFile(fileName, content):
+	with open(f"{fileName}", 'w', encoding = 'utf-8') as f:
+		f.write(content)
+
+def createHeaderFile(fileName):
+	from datetime import datetime
+	import os
+	from os import mkdir
+
+	now = datetime.now() # current date and time
+
+	content =   (
+					"/*\n"
+					f"\t* HEADER {fileName.upper()}\n"
+					f"\t* Author : {NAME}\n"
+					f"\t* Date   : {now.strftime('%d/%m/%Y')}\n"
+					"\t! DESCRIPTION\n"
+					"*/\n\n"
+					f"#ifndef _{fileName.upper()}_H_\n"
+					f"#define _{fileName.upper()}_H_\n\n"
+					"// DEFINES\n\n"
+					"// PROTOTYPE FUNCTIONS\n\n"
+					"#endif"
+				)
+
+	if not os.path.exists('include'):
+		mkdir('include')
+	createFile(f"include/{fileName}.h", content)
+
+def createCodeFile(fileName):
+	from datetime import datetime
+	from datetime import datetime
+	import os
+	from os import mkdir
+	
+	now = datetime.now() # current date and time
+
+	content =   (
+					"/*\n"
+					f"\t* CODE {fileName.upper()}\n"
+					f"\t* Author : {NAME}\n"
+					f"\t* Date   : {now.strftime('%d/%m/%Y')}\n"
+					"\t! DESCRIPTION\n"
+					"*/\n\n"
+				)
+
+	# add basic printf if main
+	if fileName == "main":
+		content += "#include <stdio.h>\n\nint main()\n{\n\tprintf(\"ISSOU\\n\");\n\treturn 0;\n}"
+	
+	if not os.path.exists('src'):
+		mkdir('src')
+	createFile(f"src/{fileName}.c", content)
+
+def createMakefile():
+	content =   (
+					"CC       := gcc\n"
+					"CFLAGS := -Wall -Wextra -g -fsanitize=address -fsanitize=leak\n"
+					"\n"
+					"BIN     	 := bin\n"
+					"SRC     	 := src\n"
+					"INCLUDE 	 := include\n"
+					"LIBRARIES    := -lm\n"
+					"EXECUTABLE1  := main\n"
+					"\n"
+					"# ADD ALL THE SOURCES FOR EXECUTABLE1\n"
+					"SOURCES1 += $(SRC)/jrandom\n"
+					"\n"
+					".PHONY: all run clean # Specify these are not files but internal terms\n"
+					"\n"
+					"all: $(BIN)/$(EXECUTABLE1)\n"
+					"\n"
+					"run: clean all\n"
+					"	clear\n"
+					"	@echo "########## EXECUTE FIRST PROGRAM ##########"\n"
+					"	./$(BIN)/$(EXECUTABLE1)\n"
+					"\n"
+					"# # $^ -> dep\n"
+					"# # $@ -> target\n"
+					"# # $< -> premiere dep\n"
+					"# # Compiles directly the c files\n"
+					"# # Not optimal but succint and simple\n"
+					"\n"
+					"# COMPILE FIRST EXECUTABLE\n"
+					"$(BIN)/$(EXECUTABLE1): $(SRC)/$(EXECUTABLE1).c $(SOURCES)\n"
+					"	@echo "########## COMPILING FIRST EXECUTABLE ##########"\n"
+					"	$(CC) $(CFLAGS) -I $(INCLUDE) $^ -o $@ $(LIBRARIES)\n"
+					"\n"
+					"clean:\n"
+					"	@echo "########## CLEANING ##########"\n"
+					"	-rm $(BIN)/*\n"
+					"\n"
+				)
+	createFile("Makefile", content)
+
+def createDirStructure():
+	import os
+	from os import mkdir
+
+	if not os.path.exists('bin'):
+		mkdir('bin')
+	if not os.path.exists('build'):
+		mkdir('build')
+	if not os.path.exists('include'):
+		mkdir('include')
+	if not os.path.exists('src'):
+		mkdir('src')
+
+# ! MENU CREATION
+def createCompleteProject():
+	# Base structure (SRC, BUILD, INCLUDE, BIN)
+	createDirStructure()
+	print(f"{Fore.GREEN}+ BASIC STRUCTURE CREATED{Fore.RESET}")
+	# Makefile
+	createMakefile()
+	print(f"{Fore.GREEN}+ MAKEFILE CREATED{Fore.RESET}")
+	# Main 
+	createCodeFile("main")
+	print(f"{Fore.GREEN}+ MAIN.C FILE CREATE{Fore.RESET}")
+
+def createCodeHeader(name):
+	# Code
+	createCodeFile(name)
+	print(f"{Fore.GREEN}+ CODE FILE CREATED{Fore.RESET}")
+	# Header
+	createHeaderFile(name)
+	print(f"{Fore.GREEN}+ HEADER FILE CREATED{Fore.RESET}")
+
+
+
+# ! MENU
+def menu():
+	choice = input(
+	"1 - COMPLETE PROJECT                 \n"
+	"2 - CODE + HEADER                    \n"
+	"3 - CODE ONLY                        \n"
+	"4 - HEADER ONLY                      \n"
+	"5 - MAKEFILE ONLY                    \n"
+	"\n"
+
+	)
+
+	# PROJECT
+	if choice == '1': 
+		print(f"{Fore.BLUE}FULL PROJECT IS BEING CREATED.{Fore.RESET}")
+		createCompleteProject()
+
+	# CODE + HEADER
+	elif choice == '2':
+		print(f"{Fore.BLUE}A CODE AND HEADER FILE ARE BEING CREATED.{Fore.RESET}")
+		createCodeHeader(input("WHAT FILE NAME DO YOU WANT : "))		
+	
+	# CODE 
+	elif choice == '3':
+		print(f"{Fore.BLUE}A CODE FILE IS BEING CREATED.{Fore.RESET}")
+		createCodeFile(input("WHAT FILE NAME DO YOU WANT : "))
+		print(f"{Fore.GREEN}+ CODE FILE CREATED{Fore.RESET}")
+
+	# HEADER
+	elif choice == '4':
+		print(f"{Fore.BLUE}A HEADER FILE IS BEING CREATED.{Fore.RESET}")
+		createHeaderFile(input("WHAT FILE NAME DO YOU WANT : "))	
+		print(f"{Fore.GREEN}+ CODE FILE CREATED{Fore.RESET}")
+
+	# MAKEFILE
+	elif choice == '5':
+		print(f"{Fore.BLUE}A HEADER FILE IS BEING CREATED.")
+		createMakefile()		
+		print(f"{Fore.GREEN}+  MAKEFILE CREATED{Fore.RESET}")
+
+if __name__ == "__main__":
+	menu()
+
+
+
diff --git a/stack/src/main.c b/stack/src/main.c
new file mode 100644
index 0000000..6debd65
--- /dev/null
+++ b/stack/src/main.c
@@ -0,0 +1,14 @@
+/*
+	* CODE MAIN
+	* Author : Jonas S.
+	* Date   : 17/11/2021
+	! DESCRIPTION
+*/
+
+#include <stdio.h>
+
+int main()
+{
+	printf("ISSOU\n");
+	return 0;
+}
\ No newline at end of file
diff --git a/stack/src/stack.c b/stack/src/stack.c
new file mode 100644
index 0000000..b5bfae5
--- /dev/null
+++ b/stack/src/stack.c
@@ -0,0 +1,48 @@
+/*
+	* CODE STACK
+	* Author : Jonas S.
+	* Date   : 17/11/2021
+	! STACK IMPLEMENTATION
+*/
+
+#include "../include/stack.h"
+
+int32_t* create_stack()
+{
+	stack_t* st = malloc(sizeof(stack_t));
+	st->data = malloc(MAX_CAPACITY * sizeof(int32_t));
+	st->top = -1;
+}
+
+void stack_push(stack_t* st, int32_t val)
+{
+	st->data[++st->top] = val;
+}
+
+int32_t stack_pop(stack_t* st)
+{
+
+	return st->data[st->top--];
+}
+
+int32_t stack_peek(stack_t st)
+{
+	return st.data[st.top];
+}
+
+bool stack_is_full(stack_t st)
+{
+	return st.top == MAX_CAPACITY;
+}
+
+bool stack_is_empty(stack_t st)
+{
+	return st.top == -1;
+}
+
+
+void stack_destroy(stack_t* st)
+{
+	free(st->data);
+	free(st);
+}
-- 
GitLab