Untitled

 avatar
unknown
apache_conf
2 years ago
3.0 kB
5
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...