sheet09+prob

This commit is contained in:
Leon Wilzer 2023-03-10 18:38:13 +01:00
parent 9ba3ec7499
commit 300d1ae955
4 changed files with 65 additions and 17 deletions

5
1
View File

@ -1,5 +0,0 @@
00000
01110
00000
00000


View File

@ -65,3 +65,8 @@ pizza:
$(CC) src/pizza.cpp -o build/pizza $(CC) src/pizza.cpp -o build/pizza
chmod +x build/pizza chmod +x build/pizza
build/pizza build/pizza
probability:
$(CC) src/probability.cpp -o build/probability
chmod +x build/probability
build/probability

View File

@ -69,17 +69,23 @@ class HTable
friend std::ostream& operator<<(std::ostream &os, const HTable &h) friend std::ostream& operator<<(std::ostream &os, const HTable &h)
{ {
os << '{'; os << '{';
for(auto &pair : h.data) for(auto pair = h.data.cbegin(); pair != h.data.cend(); ++pair)
{ {
os << "(\""; os << "(\"";
os << pair.first; os << pair[0].first;
os << "\": "; os << "\": ";
os << pair.second; os << pair[0].second;
if(std::distance(pair, *h.data.end())==1)
{ os << ")}"; } if(pair == h.data.cend()-1)
else {
{ os << "), "; } os << ")";
} }
else
{
os << "), ";
}
}
os << '}';
return os; return os;
} }
@ -100,28 +106,35 @@ class HTable
position = 0; position = 0;
} }
} }
throw std::runtime_error("Could not find key!"); }
void clear()
{
for(size_t i=0; i<data.size(); ++i)
{
positions_in_use[i] = false;
data[i] = std::pair<std::string, T>();
}
} }
}; };
int main() int main()
{ {
HTable<size_t> t1(5); HTable<size_t> t1(5);
std::cout << t1 << '\n'; std::cout << t1 << '\n';
for(size_t i=0; i<5;++i) for(size_t i=0; i<5;++i)
{ {
t1.insert(std::to_string(i), i); t1.insert(std::to_string(i), i);
} }
std::cout << t1 << '\n'; std::cout << t1 << '\n';
t1.insert("1", 10); t1.insert("1", 10);
std::cout << t1 << '\n'; std::cout << t1 << '\n';
t1.erase("1"); t1.erase("4");
std::cout << t1 << '\n';
t1.clear();
std::cout << t1 << '\n'; std::cout << t1 << '\n';
} }

35
src/probability.cpp Normal file
View File

@ -0,0 +1,35 @@
#include <cstddef>
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <ctime>
constexpr size_t TRIALS_AMOUNT = 1000000;
int main()
{
size_t monday_heads = 0;
size_t monday_tails = 0;
size_t tuesday_tails = 0;
std::srand(std::time(nullptr));
for(std::size_t i=0; i<TRIALS_AMOUNT;++i)
{
if(std::rand()%2)
{
++monday_heads;
}
else {
if(std::rand()%2)
{
++monday_tails;
}
else
{
++tuesday_tails;
}
}
}
std::printf("Monday Heads: %zu (%f%%)\n", monday_heads, monday_heads*100.0/TRIALS_AMOUNT);
std::printf("Monday Tails: %zu (%f%%)\n", monday_tails, monday_tails*100.0/TRIALS_AMOUNT);
std::printf("Tuesday Tails: %zu (%f%%)\n", tuesday_tails, tuesday_tails*100.0/TRIALS_AMOUNT);
}