Форум программистов, компьютерный форум CyberForum.ru

игра (с++) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Числовой массив http://www.cyberforum.ru/cpp-beginners/thread201399.html
Задан числовой массив, состоящий из n элементов (n<=100). Определить есть ли среди последних 5 элементов только один четный положительный.
C++ Количество дней от одной даты до другой Здравствуйте. Подскажите пожалуйста как найти количество дней от одной даты до другой? http://www.cyberforum.ru/cpp-beginners/thread201387.html
C++ Учебники С++ для начинающего программиста
Здравствуйте,подскажите где можно скачать Учебники С++ для начинающего программиста,где всё достоверно написано что да как делать?
C++ Шаблоны функции
Помогите решить срочняк:umnik: S=(exp(y)*exp(x))+sqrt(x)
C++ Одномерный массив! http://www.cyberforum.ru/cpp-beginners/thread201319.html
Найти максимальный элемент с реди положительных одномерного масива и минимальный среди отрицательных чисел. к примеру будет: Чисел 10 будет в программе!!!
C++ расчет по двум формулам Программа для расчета по двум формулам. Предварительно подготовить тестовые примеры по второй формуле с помощью калькулятора (результат вычисления по первой формуле должен совпадать со второй) z1=1-1/4 (sin*2)2L+cos2L z2=(cos*2)L+(cos*4)L подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
 Аватар для Mr.X
3011 / 1667 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
02.12.2010, 23:06     игра (с++)
С понятным алгоритмом:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
//////////////////////////////////////////////////////////////////////////////////////
//Нужно составить игру про шарики. Если в линии встречаются 3 или больше одинаковых 
//цветов шарико, то нужно этот ряд шаров удалить. Задача состоит в том что бы посчитать 
//сколько шариков удалилось. Цвета шариков это номера от 1 до 9. Тест такой:
//
//ввод1:
//5
//1 3 3 3 2
//вывод1:
//3
//
//ввод2:
//10
//3 3 2 1 1 1 2 2 3 3
//вывод2:
//10
//////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <iostream>
#include <list>
#include <stack>
//////////////////////////////////////////////////////////////////////////////////////
typedef int                T_ball;
typedef std::list<T_ball>  T_balls;
//////////////////////////////////////////////////////////////////////////////////////
int  removed_balls_count(T_balls  balls)
{    
    size_t  size_start = balls.size();
    T_balls::iterator  beg_series_it;
    T_balls::iterator  end_series_it = balls.begin();
    
    while((beg_series_it 
           = std::adjacent_find(end_series_it, balls.end())) != balls.end())
    {       
        end_series_it 
            = std::find_if(beg_series_it, balls.end(), 
                           std::not1(std::bind2nd(std::equal_to<T_ball>(), *beg_series_it)));
 
        if(std::distance(beg_series_it, end_series_it) < 3) continue;
        
        balls.erase(beg_series_it, end_series_it);
        end_series_it = balls.begin();
    }    
    return  size_start - balls.size();
}
//////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
 
    std::cout << "Введите количество шариков: ";
    int n = 0; 
    std::cin >> n;
 
    struct T_input_ball
    {
        void operator() (T_ball&  ball)
        {
            std::cout << "->";
            std::cin >> ball;            
        }
    };
 
    T_balls  balls(n);
    std::for_each(balls.begin(), balls.end(), T_input_ball());
 
    std::cout << "Удалено "
              << removed_balls_count(balls)
              << " шариков."
              << std::endl;
}
 
Текущее время: 11:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru