Untitled
unknown
apache_conf
3 years ago
3.0 kB
7
Indexable
#include <iostream>
#include <queue>
#include <string>
#include <vector>
#include <random>
#include <thread>
template <typename T>
T my_rand(const T &min, const T &max) {
std::mt19937 rnd{std::random_device{}()};
std::uniform_int_distribution<T> makeUniform(min, max);
return makeUniform(rnd);
}
const char *r_name() {
static constexpr int size = 10;
static const char *name[] = {
"ziya", "yusuf", "zahir", "aycan", "ismihan",
"elif", "ece", "enes", "sadik", "qiyasettin"
};
return name[my_rand(0, size-1)];
}
const char *r_surname() {
static constexpr int size = 4;
static const char *surname[] = {
"arslan", "elik", "hanelci", "yesilkaya"
};
return surname[my_rand(0,size-1)];
}
class Person {
public:
Person(std::string name, std::string surname, int i) :
m_name{name}, m_surname{surname}, m_id{i} {}
friend std::ostream &operator <<(std::ostream& out, const Person &p) {
return out<<p.m_name<<" "<<p.m_surname;
}
int get_id() const { return m_id; }
private:
int m_id;
std::string m_name, m_surname;
};
namespace Counter {
constexpr size_t size = 5;
int counter[size] = {0,0,0,0,0};
int fill_counter(const Person&p) {
int idx;
do {
idx = my_rand(0,4);
}while(counter[idx] != 0);
counter[idx] = p.get_id();
return idx;
}
void print_counter() {
std::cout<<"\n\n";
for(size_t i=0;i<size;i++)
std::cout<<(i+1)<<" ";
std::cout<<"\n";
for(size_t i=0;i<size;i++)
std::cout<<counter[i]<<" ";
std::cout<<"\n";
}
void current_count(const Person &p) {
std::cout<<"sayin ";
std::cout<<p<<" lutfen "
<<fill_counter(p)+1<<" .nolu giseye\n";
}
void listen_counter() {
std::cout<<"islemi sonlanan giseyi yaziniz: ";
size_t i;
std::cin>>i;
counter[i] = 0;
}
bool full_counter() {
int flag = 0;
for(size_t i=0;i<size;i++)
if(counter[i] != 0)
flag++;
return flag == size;
}
}
int main() {
std::queue<Person> qu;
for(int i=0;i<10;i++) {
Person p{r_name(), r_surname(), i+1};
qu.push(std::move(p));
}
while(qu.size() != 0) {
Counter::current_count(qu.front());
qu.pop();
Counter::print_counter();
if(Counter::full_counter())
Counter::listen_counter();
//Counter::listen_counter();
}
}Editor is loading...