aboutsummaryrefslogtreecommitdiff
path: root/cpp07/ex01
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-04-14 20:42:26 +0200
committerCharles <sircharlesaze@gmail.com>2020-04-14 20:42:26 +0200
commit7ac812044bfe771178752a52d70b18bb297c1891 (patch)
tree5f5faf0d627304cdfe1f1f45194b3da76653fff8 /cpp07/ex01
parentefea8712aaf8169b1184cceb83705ca6b8783173 (diff)
downloadpiscine_cpp-7ac812044bfe771178752a52d70b18bb297c1891.tar.gz
piscine_cpp-7ac812044bfe771178752a52d70b18bb297c1891.tar.bz2
piscine_cpp-7ac812044bfe771178752a52d70b18bb297c1891.zip
cpp07 done, cpp06 ex00 and ex01 start
Diffstat (limited to 'cpp07/ex01')
-rw-r--r--cpp07/ex01/Makefile35
-rw-r--r--cpp07/ex01/iter.cpp63
2 files changed, 98 insertions, 0 deletions
diff --git a/cpp07/ex01/Makefile b/cpp07/ex01/Makefile
new file mode 100644
index 0000000..45180bc
--- /dev/null
+++ b/cpp07/ex01/Makefile
@@ -0,0 +1,35 @@
+# **************************************************************************** #
+# #
+# ::: :::::::: #
+# Makefile :+: :+: :+: #
+# +:+ +:+ +:+ #
+# By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ #
+# +#+#+#+#+#+ +#+ #
+# Created: 2020/04/14 19:48:34 by charles #+# #+# #
+# Updated: 2020/04/14 20:02:14 by charles ### ########.fr #
+# #
+# **************************************************************************** #
+
+NAME = iter
+
+CXX = clang++
+CXXFLAGS = -std=c++98 -Wall -Wextra -Werror
+
+SRC = iter.cpp
+OBJ = $(SRC:.cpp=.o)
+
+all: $(NAME)
+
+$(NAME): $(OBJ)
+ $(CXX) -o $@ $<
+
+%.o: %.cpp
+ $(CXX) $(CXXFLAGS) -c -o $@ $^
+
+clean:
+ rm -rf $(OBJ)
+
+fclean: clean
+ rm -rf $(NAME)
+
+re: fclean all
diff --git a/cpp07/ex01/iter.cpp b/cpp07/ex01/iter.cpp
new file mode 100644
index 0000000..80b29d3
--- /dev/null
+++ b/cpp07/ex01/iter.cpp
@@ -0,0 +1,63 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* iter.cpp :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/04/14 20:02:19 by charles #+# #+# */
+/* Updated: 2020/04/14 20:12:17 by charles ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#include <iostream>
+
+template<typename T>
+void iter(T* ptr, size_t len, void (*f)(T* x))
+{
+ for (size_t i = 0; i < len; i++)
+ f(ptr + i);
+}
+
+template<typename T>
+void timeTwo(T* x)
+{
+ *x *= 2;
+}
+
+int main()
+{
+ int intArray[] = {1, 2, 3, 4, 10, 20, 30, -1, -2};
+ size_t intArraySize = sizeof(intArray) / sizeof(int);
+ for (size_t i = 0; i < intArraySize; i++)
+ std::cout << intArray[i] << ", ";
+ std::cout << std::endl;
+ iter(intArray, intArraySize, timeTwo<int>);
+ for (size_t i = 0; i < intArraySize; i++)
+ std::cout << intArray[i] << ", ";
+ std::cout << std::endl;
+ std::cout << "--------------------------------------" << std::endl;
+
+ float floatArray[] = {1.1, 2.2, 3.3, 4.3, 10.001, 20.9, 30.3, -1.2, -2.4};
+ size_t floatArraySize = sizeof(floatArray) / sizeof(float);
+ for (size_t i = 0; i < floatArraySize; i++)
+ std::cout << floatArray[i] << ", ";
+ std::cout << std::endl;
+ iter(floatArray, floatArraySize, timeTwo<float>);
+ for (size_t i = 0; i < floatArraySize; i++)
+ std::cout << floatArray[i] << ", ";
+ std::cout << std::endl;
+ std::cout << "--------------------------------------" << std::endl;
+
+ unsigned int uintArray[] = {1, 2, 3, 4, 10, 20, 30, 100, 2000};
+ size_t uintArraySize = sizeof(uintArray) / sizeof(unsigned int);
+ for (size_t i = 0; i < uintArraySize; i++)
+ std::cout << uintArray[i] << ", ";
+ std::cout << std::endl;
+ iter(uintArray, uintArraySize, timeTwo<unsigned int>);
+ for (size_t i = 0; i < uintArraySize; i++)
+ std::cout << uintArray[i] << ", ";
+ std::cout << std::endl;
+
+ return 0;
+}