Exercises: Add task0[45]

This commit is contained in:
Alex Hirsch 2020-10-22 12:46:23 +02:00
parent ce843d870f
commit 95ef4f720d
3 changed files with 64 additions and 0 deletions

View File

@ -43,3 +43,25 @@ It depends on all three libraries.
CMake itself is a build system generator.
You can choose from a variety of target build systems.
## Task 04
Examine the program [`iterations.cpp`](task04/iterations.cpp) and think about the expected output.
Compile the program and run it.
What do you notice?
Did you expect this behaviour?
Did you get any compiler warnings?
Investigate what is actually happening (consider using `valgrind` or a debugger).
How can such errors be prevented?
Look for tools (e.g. static code analysers) which help discovering such faulty code.
**Note:** If you run the executable and everything seems normal, try changing the initial content of `xs`, using different optimisation flags, or a different compiler.
The actual behaviour of this executable depends on various factors.
## Task 05
You are given the program [`strange.cpp`](task05/strange.cpp).
Compile it with different compilers and optimisation flags.
What do you notice?
What is really happening here?

View File

@ -0,0 +1,19 @@
#include <iostream>
#include <vector>
int main()
{
std::vector<int> xs{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
for (auto it = xs.begin(); it != xs.end(); ++it) {
for (int i = 0; i < *it; i++) {
xs.push_back(*it);
}
}
std::cout << "Vector: ";
for (const auto &x : xs) {
std::cout << x << " ";
}
std::cout << "\n";
}

View File

@ -0,0 +1,23 @@
#include <iostream>
int array[5] = {};
bool contains(int v)
{
for (int i = 0; i <= 5; ++i) {
if (array[i] == v) {
return true;
}
}
return false;
}
int main()
{
for (int i = 0; i < 10; ++i) {
auto contains_text = contains(i) ? "contains " : "does not contain ";
std::cout << "array " << contains_text << i << std::endl;
}
std::cout << "done" << std::endl;
}