Skip to content

Commit

Permalink
update: 添加题目
Browse files Browse the repository at this point in the history
Signed-off-by: YdrMaster <[email protected]>
  • Loading branch information
YdrMaster committed Jul 8, 2024
1 parent 98ab1d6 commit 9d9904f
Show file tree
Hide file tree
Showing 6 changed files with 78 additions and 4 deletions.
2 changes: 0 additions & 2 deletions exercises/04_static/main.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
// See <https://stackoverflow.com/questions/156767/whats-the-difference-between-an-argument-and-a-parameter>.

#include <iostream>

void func(int param) {
Expand Down
2 changes: 0 additions & 2 deletions exercises/05_constexpr/main.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
// See <https://stackoverflow.com/questions/156767/whats-the-difference-between-an-argument-and-a-parameter>.

#include <iostream>

constexpr int fibonacci(int i) {
Expand Down
15 changes: 15 additions & 0 deletions exercises/06_loop/main.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#include <iostream>

unsigned long long fibonacci(int i) {
static unsigned long long cache[128]{0, 1}, next = 2;
for (; next <= i; ++next) {
cache[next] = cache[next - 1] + cache[next - 2];
}
return cache[i];
}

int main(int argc, char **argv) {
auto fib100 = fibonacci(100);
std::cout << "fibonacci(100) = " << fib100 << std::endl;
return 0;
}
25 changes: 25 additions & 0 deletions exercises/07_struct/main.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#include <iostream>

struct Fibonacci {
size_t cache[128];
int next = 2;

Fibonacci() : cache{0, 1}, next(2) {}
~Fibonacci() {
std::cout << "Drop Fibonacci with next = " << next << std::endl;
}

size_t operator[](int i) {
for (; next <= i; ++next) {
cache[next] = cache[next - 1] + cache[next - 2];
}
return cache[i];
}
};

int main(int argc, char **argv) {
Fibonacci fib0, fib1;
std::cout << "fibonacci(10) = " << fib0[10] << std::endl;
std::cout << "fibonacci(100) = " << fib1[100] << std::endl;
return 0;
}
26 changes: 26 additions & 0 deletions exercises/08_class/main.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#include <iostream>

class Fibonacci {
size_t cache[128];
int next = 2;

public:
Fibonacci() : cache{0, 1}, next(2) {}
~Fibonacci() {
std::cout << "Drop Fibonacci with next = " << next << std::endl;
}

size_t operator[](int i) {
for (; next <= i; ++next) {
cache[next] = cache[next - 1] + cache[next - 2];
}
return cache[i];
}
};

int main(int argc, char **argv) {
Fibonacci fib0, fib1;
std::cout << "fibonacci(10) = " << fib0[10] << std::endl;
std::cout << "fibonacci(100) = " << fib1[100] << std::endl;
return 0;
}
12 changes: 12 additions & 0 deletions xmake.lua
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,15 @@ target("exercise04")
target("exercise05")
set_kind("binary")
add_files("exercises/05_constexpr/main.cpp")

target("exercise06")
set_kind("binary")
add_files("exercises/06_loop/main.cpp")

target("exercise07")
set_kind("binary")
add_files("exercises/07_struct/main.cpp")

target("exercise08")
set_kind("binary")
add_files("exercises/08_class/main.cpp")

0 comments on commit 9d9904f

Please sign in to comment.