From fa8582030c0fb7a2bc73e53d6dfa650e3debe49d Mon Sep 17 00:00:00 2001 From: Walt Mankowski Date: Tue, 4 Aug 2020 19:22:31 -0400 Subject: C++ code for challenge 72 --- challenge-072/walt-mankowski/c++/.gitignore | 2 ++ challenge-072/walt-mankowski/c++/Makefile | 23 ++++++++++++++++++++++ challenge-072/walt-mankowski/c++/ch-1.cpp | 30 +++++++++++++++++++++++++++++ challenge-072/walt-mankowski/c++/ch-2.cpp | 29 ++++++++++++++++++++++++++++ 4 files changed, 84 insertions(+) create mode 100644 challenge-072/walt-mankowski/c++/.gitignore create mode 100644 challenge-072/walt-mankowski/c++/Makefile create mode 100644 challenge-072/walt-mankowski/c++/ch-1.cpp create mode 100644 challenge-072/walt-mankowski/c++/ch-2.cpp diff --git a/challenge-072/walt-mankowski/c++/.gitignore b/challenge-072/walt-mankowski/c++/.gitignore new file mode 100644 index 0000000000..ac77297bfe --- /dev/null +++ b/challenge-072/walt-mankowski/c++/.gitignore @@ -0,0 +1,2 @@ +ch-1 +ch-2 diff --git a/challenge-072/walt-mankowski/c++/Makefile b/challenge-072/walt-mankowski/c++/Makefile new file mode 100644 index 0000000000..0192513d07 --- /dev/null +++ b/challenge-072/walt-mankowski/c++/Makefile @@ -0,0 +1,23 @@ +CPP = /usr/bin/c++ +INCLDIRS = +LIBDIRS = +LIBS = +CFLAGS = -std=c++17 -Wall -O3 $(INCLDIRS) +OBJECTS1 = ch-1.o +OBJECTS2 = ch-2.o + +all: ch-1 ch-2 + +%.o: %.cpp + $(CPP) $(CFLAGS) -c $< + +ch-1: $(OBJECTS1) + $(CPP) -o $@ $(OBJECTS1) $(LIBDIRS) $(LIBS) + +ch-2: $(OBJECTS2) + $(CPP) -o $@ $(OBJECTS2) $(LIBDIRS) $(LIBS) + +clean: + rm -f *~ + rm -f *.o + rm -f ch-1 ch-2 diff --git a/challenge-072/walt-mankowski/c++/ch-1.cpp b/challenge-072/walt-mankowski/c++/ch-1.cpp new file mode 100644 index 0000000000..ba8c614fa1 --- /dev/null +++ b/challenge-072/walt-mankowski/c++/ch-1.cpp @@ -0,0 +1,30 @@ +#include +#include +#include + +using namespace std; + +const unsigned long long fact(const int n) { + unsigned long long res = 1; + for (int i = 2; i <= n; i++) + res *= i; + return res; +} + +const int num_trailing_zeros(const unsigned long long n) { + int cnt = 0; + unsigned long long pwr = 10; + while (n % pwr == 0) { + cnt++; + pwr *= 10; + } + return cnt; +} + +int main(int argc, char *argv[]) { + int n = atoi(argv[1]); + unsigned long long f = fact(n); + int z = num_trailing_zeros(f); + string zeros = (z == 1) ? "zero" : "zeros"; + cout << n << " as N! = " << f << " has " << z << " trailing " << zeros << endl; +} diff --git a/challenge-072/walt-mankowski/c++/ch-2.cpp b/challenge-072/walt-mankowski/c++/ch-2.cpp new file mode 100644 index 0000000000..03f5d1c067 --- /dev/null +++ b/challenge-072/walt-mankowski/c++/ch-2.cpp @@ -0,0 +1,29 @@ +#include +#include +#include +#include +#include + +using namespace std; + +int main(int argc, char *argv[]) { + const string fname = argv[1]; + const int a = atoi(argv[2]); + const int b = atoi(argv[3]); + + ifstream infile(fname); + if (!infile) { + perror(fname.c_str()); + exit(1); + } + + int lineno = 1; + string s; + while (infile >> s) { + if (a <= lineno && lineno <= b) + cout << s << endl; + lineno++; + if (lineno > b) + break; + } +} -- cgit