Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<stack>
- #include <time.h>
- #define LASTSECTOR 4
- using std::cout;
- using std::cin;
- using std::endl;
- using std::string;
- // using std::stack;
- class lottery{
- private:
- int pocket_pointer;
- int lottery_dram[36];
- int ends_of_sectors_array[5];
- int user_namber[37] = {0};
- std::stack <int> drop_bals_stak;
- public:
- void take_namber_from_key(){
- cout << "Введите 5 чисел от 1 до 36 через пробел " << endl;
- int counter = 0;
- int number = 0;
- while(counter < 5){
- cin >> number;
- if(number > 0 && number < 37){
- //cout << number << " n";
- if(user_namber[number] == 0){
- user_namber[number] = 1;
- counter++;
- }
- else{
- cout << "Число уже было введено: " << number << endl;
- }
- }
- else {
- cout << "Вы ввели неправильное число: " << number << endl;
- }
- }
- for(int counter = 1; counter < 37; counter++){
- //cout << user_namber[counter] << " ";
- if(user_namber[counter] == 1){
- //cout << counter << " ";
- }
- }
- //cout << endl;
- }
- void throw_balls(){
- int temp;
- int rand_index;
- for(int counter = 0; counter <= 35; counter++){
- lottery_dram[counter] = counter + 1;
- }
- for (int counter = 0; counter <= 35; counter++){
- rand_index = rand()%36;
- temp = lottery_dram[counter];
- lottery_dram[counter] = lottery_dram[rand_index];
- lottery_dram[rand_index] = temp;
- }
- ends_of_sectors_array[0] = 0;
- ends_of_sectors_array[1] = 13;
- ends_of_sectors_array[2] = 26;
- ends_of_sectors_array[3] = 30;
- ends_of_sectors_array[4] = 35;
- pocket_pointer = 0;
- }
- void print_balls_from_drum(){
- for(int counter = 0; counter <= 35; counter++){
- cout << lottery_dram[counter] << " ";
- }
- cout << endl;
- cout << "top ball" << drop_bals_stak.top() << endl;
- for(int counter = 1; counter <= 4; counter++){
- cout << "sector: " << counter << " " << ends_of_sectors_array[counter] << endl;
- }
- }
- void shuffle_balls_in_sector(int sector_number){
- int start, end, temp, rand_namber;
- // cout << "Sector shuffle: " << sector_number << " start " << endl;
- //print_balls_from_drum();
- switch(sector_number){
- case 1:
- start = 0;
- end = ends_of_sectors_array[1];
- break;
- case 2:
- start = ends_of_sectors_array[1] + 1;
- end = ends_of_sectors_array[2];
- break;
- case 3:
- start = ends_of_sectors_array[2] + 1;
- end = ends_of_sectors_array[3];
- break;
- case 4:
- start = ends_of_sectors_array[3] + 1;
- end = ends_of_sectors_array[LASTSECTOR];
- break;
- }
- for(int counter = start; counter <= end; counter++){
- rand_namber = std::rand()%(end - start + 1);
- //cout << "rand_namber: " << rand_namber<< endl;
- temp = lottery_dram[counter];
- lottery_dram[counter] = lottery_dram[rand_namber];
- lottery_dram[rand_namber] = temp;
- }
- //cout << "Sector shuffle: " << sector_number << " start " << endl;
- //print_balls_from_drum();
- ball_jump_from_sector(sector_number);
- }
- void array_scrolling(){
- for(int counter = get_balls_count() - 1; counter > 0; counter-- ){
- lottery_dram[counter] = lottery_dram[counter-1];
- }
- }
- void pocket_scrolling(){
- if(pocket_pointer > 0){
- pocket_pointer--;
- }
- else {
- pocket_pointer = get_balls_count() - 1;
- };
- cout << pocket_pointer << "" << endl;
- }
- void ball_jump_from_sector(int sector_namber){
- if (std::rand()%2 == 0){
- if (sector_namber < 4){
- ends_of_sectors_array[sector_namber] --;
- }
- else{
- array_scrolling();
- ends_of_sectors_array[1]++;
- ends_of_sectors_array[2]++;
- ends_of_sectors_array[3]++;
- };
- }
- }
- void dram_rotate (){
- shuffle_balls_in_sector(1);
- shuffle_balls_in_sector(2);
- shuffle_balls_in_sector(3);
- shuffle_balls_in_sector(4);
- pocket_scrolling();
- drop_ball_to_pocet();
- array_scrolling();
- }
- void drop_ball_to_pocet(){
- int sector_namber = 0;
- if(pocket_pointer <= ends_of_sectors_array[1]){
- sector_namber = 1;
- }
- else if(pocket_pointer <= ends_of_sectors_array[2]){
- sector_namber = 2;
- }
- else if(pocket_pointer <= ends_of_sectors_array[3]){
- sector_namber = 3;
- }
- else if(pocket_pointer <= ends_of_sectors_array[4]){
- sector_namber = 4;
- }
- // cout << "ball_pocket_pointer_in_sector" << sector_namber << " sector_1_end" << ends_of_sectors_array[1] << " sector_2_end " << ends_of_sectors_array[2] << " sector_3_end" << ends_of_sectors_array[3] << " sector_4_end" << ends_of_sectors_array[4] << endl;
- if(rand()%1 == 0){
- drop_bals_stak.push(lottery_dram[pocket_pointer]);
- // cout << drop_bals_stak.top() << " "; // << endl;
- for(int counter = pocket_pointer; counter < ends_of_sectors_array[4]; counter++){
- lottery_dram[counter] = lottery_dram[counter + 1];
- }
- lottery_dram[ends_of_sectors_array[4]];
- for (int counter = sector_namber; counter <= LASTSECTOR; counter++){
- ends_of_sectors_array[counter]--;
- }
- }
- }
- int get_balls_count(){
- int balls_count;
- balls_count = ends_of_sectors_array[4] + 1;
- return(balls_count);
- }
- void check_user_result(){
- }
- int get_dropped_balls_count(){
- return(36 - get_balls_count());
- }
- };
- int main(){
- std::srand(time(NULL));
- std::rand();
- lottery lot1;
- lot1.take_namber_from_key();
- // while(lot1.get_dropped_balls_count() < 5){
- lot1.throw_balls();
- //lot1.print_balls_from_drum();
- lot1.dram_rotate();
- lot1.dram_rotate();
- lot1.dram_rotate();
- // }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement