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

Найти в массиве все повторяющиеся последовательности - C++

Восстановить пароль Регистрация
 
Ogurtsov
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 10
06.11.2012, 17:30     Найти в массиве все повторяющиеся последовательности #1
Создать программу, которая вводит c клавиатуры массив целых чисел, находит в нем все повторяющиеся последовательности (1 1, 2 2 2 и т.д.) и заменяет каждую из них на два элемента: повторяющееся число и длину последовательности. Выдать результирующую последовательность и пары "длина - число последовательностей данной длины"

вход: 1 1 1 2 2 2 2 3 4 4 4 5 5 5
выход: 1 3 2 4 3 4 3 5 3
1 - 1
2 - 0
3 - 3
4 - 1
Спасибо.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
miriganua
129 / 100 / 4
Регистрация: 05.02.2012
Сообщений: 241
06.11.2012, 18:08     Найти в массиве все повторяющиеся последовательности #2
Случаем не в НТУ "ХПИ" учишся?
Ogurtsov
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 10
06.11.2012, 18:15  [ТС]     Найти в массиве все повторяющиеся последовательности #3
Именно
miriganua
129 / 100 / 4
Регистрация: 05.02.2012
Сообщений: 241
06.11.2012, 18:17     Найти в массиве все повторяющиеся последовательности #4
Первый курс. А ведет, наверное, Воловщиков.
Ogurtsov
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 10
06.11.2012, 18:18  [ТС]     Найти в массиве все повторяющиеся последовательности #5
Так оно и есть)
miriganua
129 / 100 / 4
Регистрация: 05.02.2012
Сообщений: 241
06.11.2012, 18:19     Найти в массиве все повторяющиеся последовательности #6
Ну это судьба!!! А програмку я такую делал. Сейчас попробую повторить.
Ogurtsov
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 10
06.11.2012, 18:23  [ТС]     Найти в массиве все повторяющиеся последовательности #7
о, порядок. И за одно скинь свою ссылку вк. А то на форумах общаться неудобно)
miriganua
129 / 100 / 4
Регистрация: 05.02.2012
Сообщений: 241
06.11.2012, 19:34     Найти в массиве все повторяющиеся последовательности #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Накропал я тут "монстра". Не знаю насколько это правильно, но вроде работает, но ты потестируй
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
72
73
74
75
76
#include <iostream>
 
using std::cin;
using std::cout;
 
int countOfRepeatedElements(int* arr, int sizeOfArray, int indexOfElement) 
{
    int countOfRepeatedElements = 0;
    for (int i = indexOfElement; i < sizeOfArray && (arr[indexOfElement] == arr[i]); i++)
    {
        countOfRepeatedElements++;
    }
    return countOfRepeatedElements;
}
 
int main(int argc, char* argv) 
{
    int sizeOfInitialArray;
    cout << "Enter size of array:";
    cin >> sizeOfInitialArray;
 
    int* initialArray = new int[sizeOfInitialArray];
    cout << "Enter elements of array:" << '\n';
    for (int i = 0; i < sizeOfInitialArray; i++) 
    {
        cin >> initialArray[i];
    }
 
    int countOfSequences = 0;
    for (int i = 0; i < sizeOfInitialArray;)
    {
        i += countOfRepeatedElements(initialArray, sizeOfInitialArray, i);      
        countOfSequences++;
    }
 
    int* newArray = new int[2 * countOfSequences];
    for (int i = 0, j = 0; i < 2 * countOfSequences; i += 2)
    {
        newArray[i] = initialArray[j];
        newArray[i + 1] = countOfRepeatedElements(initialArray, sizeOfInitialArray, j);
        j += countOfRepeatedElements(initialArray, sizeOfInitialArray, j);
    }
 
    cout << "New array:" << '\n';
    for (int i = 0; i < 2 * countOfSequences; i++) 
    {
        cout << newArray[i] << "  ";
    }
 
    int maxLength = newArray[1];
    for (int i = 1; i < 2 * countOfSequences; i += 2) 
    {
        if (newArray[i] > maxLength) 
        {
            maxLength = newArray[i];
        }
    }
 
    cout << '\n' << "Pairs:" << '\n';
    for (int i = 1; i <= maxLength; i++) 
    {
        int countOfSequencesWithCertainLength;
        countOfSequencesWithCertainLength = 0;
        for (int j = 1; j < 2 * countOfSequences; j += 2)
        {
            
            if (i == newArray[j])
            {
                countOfSequencesWithCertainLength++;
            }
        }
        cout << i << "  -  " << countOfSequencesWithCertainLength << '\n';
    }
 
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2012, 20:59     Найти в массиве все повторяющиеся последовательности
Еще ссылки по теме:

C++ Найти повторяющиеся в массиве элементы
C++ В массиве найти все повторяющиеся числа
Массивы: Найти наиболее часто повторяющиеся числа в массиве C++

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

Или воспользуйтесь поиском по форуму:
Ogurtsov
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 10
06.11.2012, 20:59  [ТС]     Найти в массиве все повторяющиеся последовательности #9
Блин, не могу вообще работать в вижуал студио. Все время какие-то ошибки.



Добавлено через 40 секунд


Добавлено через 1 минуту
Unable to start program 'D:\....(путь лабы)\lab5\debug\lab5.exe'. Не удается найти указанный файл. вот что пишет

Добавлено через 15 минут
Разобрался. И сам с собой отлично пообщался)
Yandex
Объявления
06.11.2012, 20:59     Найти в массиве все повторяющиеся последовательности
Ответ Создать тему
Опции темы

Текущее время: 03:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru