С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Sultik_Zaka
0 / 0 / 0
Регистрация: 21.09.2016
Сообщений: 59
#1

Игра с удалением шариков из массива - C++

10.11.2016, 17:19. Просмотров 155. Ответов 2
Метки нет (Все метки)

Всем привет, еще раз!
В общем стоит передо мной следующая задача:
Есть N - количество шаров (1 <= N <= 1000)
Далее идет массив из шариков int *arr = new int [N]; Каждый шарик имеет цвет (от 0 до 9)
Далее, если в массиве 3 или более одинаковых шаров рядом, то он их удаляет и заново проверяет и так до тех пор, пока не закончатся одинаковые шары
Выводит в итоге кол-во удаленных шаров

Пример:
Input:
5
1 3 3 3 1
Output:
3

Input:
10
3 3 2 1 1 1 2 2 3 3
Output:
10 (сначала удаляются 1 1 1, остается 3 3 2 2 2 3 3 => удаляются 2 2 2 => остается 3 3 3 3 => т.к. их больше 3-х, то и они удаляются)

В общем набросал такое, но оно удаляет только 3 шара, не более и не менее... Помогите
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
#include <iostream>
using namespace std;
bool DelEl(int *arry, int &lenAr, int nom);
 
int main()
{
    int n, count = 0;
    cin >> n;
    int *arr = new int [n];
    for (int i = 0; i < n; i++)
    {
        cin >> arr[i];
    }
    for(int i = 0; i<n; i++)
    {
        if(n < 3)
        {
            break;
        }
        if(arr[i] == arr[i+1])
        {
            if(arr[i+1] == arr[i+2])
            {
                count += 3;
                DelEl(arr,n,i+1);
                DelEl(arr,n,i+1);
                DelEl(arr,n,i+1);
                i = 0;
            }
        }
    }
    cout << count << endl;
    return 0;
}
bool DelEl(int *arry, int &lenAr, int nom)
{
    if ( nom > lenAr || nom < 1)
    {
        cout << "Ошибка удаления" << endl;
        return false;
    }
 
    for(int ix = nom - 1; ix < lenAr - 1; ix++)
    {
        arry[ix] = arry[ix + 1];
    }
    lenAr--;
    return true;
}
Добавлено через 1 час 0 минут
Ребят?
Подскажите, главное, как сделать удаление 3 и более повторяющихся элементов массива
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2016, 17:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Игра с удалением шариков из массива (C++):

Ошибка при удалением двумерного динамического массива - C++
Задача состоит в том, чтобы загрузить массив из файла 17 0 0.40 10 0.3 20 0.12 30 0.45 40 0.122 50 0.44 60 0.66 70 0.85

Определение возможности сортировки массива удалением одного элемента - C++
На входе есть не менее 4 целых чисел, нужно определить, можно ли удалив не более одного элемента получить невозрастающий или неубывающий...

Движение шариков - C++
Как сделать так, чтобы два шара двигались одновременно? При моей программе изображается лишь тот, который написан первым(поскольку они...

Программная модель движения шариков - C++
вот код: #include &lt;stdlib.h&gt; #include &lt;GL/glut.h&gt; #include &lt;GL/glaux.h&gt; #include &lt;math.h&gt; #include &lt;cmath&gt; #pragma comment...

Помогите с удалением - C++
Такая проблема не могу понять как сделать: пользователь вводит текст длиной не больше 250 символом, конец ввода символ /. Потом...

9 шариков - логическая игра и как правильно ее реализовать ? - Java SE
Есть два игрока , у каждого игрока по 9 ячеек ,и в каждой ячейке по 9 шариков(начальные данные), эти шарики могут передвигаться из одной...

2
Даценд
Модератор
Эксперт .NET
3537 / 3458 / 1775
Регистрация: 20.04.2015
Сообщений: 6,362
10.11.2016, 17:35 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Sultik_Zaka,
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
#include <iostream>
using namespace std;
void DelEl(int *arry, int &lenAr, int nom, int count);
 
int main()
{
    int n, count = 0;
    cin >> n;
    int *arr = new int [n];
    for (int i = 0; i < n; i++)
    {
        cin >> arr[i];
    }
 
    for (int i=0; i<n; i++)
    {
        count = 1;
        for (int j=i+1; j<n; j++)
        {
            if (arr[i]==arr[j])
                count++;
            else
                break;
        }
        if (count > 2)
        {
            DelEl(arr, n, i, count);
            i=-1;
        }
    }
 
    for(int i = 0; i<n; i++)
    {
        cout << arr[i] << " ";
    }
 
    return 0;
}
 
void DelEl(int *arry, int &lenAr, int begin, int count)
{
    for(int i = begin + count; i < lenAr; i++)
    {
        arry[i - count] = arry[i];
    }
    lenAr-=count;
}
2
Sultik_Zaka
0 / 0 / 0
Регистрация: 21.09.2016
Сообщений: 59
10.11.2016, 17:55  [ТС] #3
Спасибо большое!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2016, 17:55
Привет! Вот еще темы с ответами:

По данному расположению шариков определите, сколько шариков будет сейчас уничтожено - Python
В одной компьютерной игре игрок выставляет в линию шарики разных цветов. Когда образуется непрерывная цепочка из трех и более шариков...

Можно ли купить k шариков мороженого ,если его продают по 3 и по 5 шариков? - C (СИ)
Задача : &quot;В кафе мороженое продают по три шарика и по пять шариков. Можно ли купить ровно k шариков мороженого?&quot; Ссылка на нее...

В кафе продается мороженое по 3 или по 5 шариков в порции. Определить, можно ли купить K шариков мороженного - Pascal ABC
В кафе продается мороженое по 3 или по 5 шариков в порции. Определить, можно ли купить K шариков мороженного. Входные данные: Во...

Найти число шариков, у которых отклонение будет меньше 1,08 мм, если изготовлено 1000 шариков - Теория вероятностей
Автомат изготавливает шарики. Диаметр шарика - случайная величина, подчиненная нормальному закону. Известно, что в среднем у 92% шариков...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.