Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Костя26В
0 / 0 / 0
Регистрация: 17.10.2016
Сообщений: 8
#1

Повторяющиеся элементы записать в новый массив - C++

05.12.2016, 19:15. Просмотров 559. Ответов 4
Метки нет (Все метки)

Всем привет. Возникла проблема которую я не могу решить уже больше недели. Задание выглядит так :
Дан массив из N целых чисел. Определить есть ли в массиве повторяющиеся элементы; если такие есть, то создать массив / массивы, в котором указано сколько раз какие элементы повторяются.

Как переписать повторяющиеся элементы в новый массив? Помогите с кодом.

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
77
78
79
80
81
82
83
84
85
86
87
#include <iostream>
#include <crtdbg.h> 
int const m = 100;
#define __CRTDBG_MAP_ALLOC                      
#define DEBUG_NEW new(_NORMAL_BLOCK, __FILE__, __LINE__)//Контроль утечки памяти необходим для того, чтобы вся выделенная память была вручную освобождена.
#define new DEBUG_NEW
using namespace std;
 
struct TNeMass            // Стуктура, которая состоит из массива повторов одинаковых чисел и их количества.
{
    int MPovtor;
    int KolPovtorov;
}; 
 
void SozdMass (int* , int);
void SortMass (int* , int);        //Прототипы функции
void PovtElementy (int* , int  ,TNeMass*);
//void NewMass (int*, int *);
 void DinMass (int,  int*);
 
int main ()
{
    int arr[m] = {0};
    int *mas = 0;
    TNeMass mstruct[m/2];
    SozdMass(arr,m);        // заполняем массив случайными числами  от [0, 100].
    for(int i = 0; i < m; i++)
        printf("%4i",arr[i]);
    printf("\n");
    SortMass(arr,m);        // сортируем массив.
    PovtElementy(arr,m,mstruct);
     DinMass (m,arr);
    // NewMass(arr,mas);
     delete [] mas;
    system("pause");
    _CrtDumpMemoryLeaks();
    return 0;
}
void SozdMass (int* a, int n) // Функция генерации массива.
{
    for(int i = 0; i < n; i++)
        a[i] = rand()%10;
}
void SortMass (int* a, int n) // Функция сортировки массива (Сортировка пузырьком)
{
    for (int i = n - 1; i > 0; i--)
    {
        for (int j = 0; j < i; j++)
            if(a[j] > a[j+1])
            {
                int tmp = a[j];
                a[j] = a[j+1];
                a[j+1] = tmp;
            }
    }
}
void PovtElementy (int* a, int n ,TNeMass *ms) // Функция нахождения в массиве повторяющихся элементов.
{
    int j = 0;
    int reps = 0;
    for(int i = 0; i < n; i++)
    {
        while ( a[i] == a [i+1])
        {       
            i++;
            reps++;
        }
                                // Оператор continue выполняет пропуск оставшейся части кода тела цикла и переходит к следующей итерации цикла.     
            if(reps != 0)
        {
            ms[j]. MPovtor = a[i];
            ms[j].KolPovtorov = reps;
            printf("%i : %i\n ",a[i],reps);     // Форматированный вывод.
 
        }
        reps = 0;
    }
}
void DinMass(int n,   int* amas)
{
    int *am = new int[n];
 
                                                                              // Выделение памяти для массива
 
    
                 // очистка памяти
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2016, 19:15
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Повторяющиеся элементы записать в новый массив (C++):

Записать элементы, которые больше среднего арифметического, в новый массив
В общем есть программа, которая находит среднее арифметическое и записывает...

Найти все ненулевые элементы матрицы и записать их в новый массив
Вроде все правильно, но находит почему то не все элементы! #include &lt;cstdlib&gt;...

Записать в новый массив все элементы исходного массива, кратные заданному числу
При помощи случайных чисел ввести одномерный массив , состоящий из 100...

Записать в новый массив все элементы исходного массива, кратные заданному числу
Напишите понятным языком.:cry: При помощи случайных чисел ввести одномерный...

Из данного массива сформировать новый массив Y, в который записать все ненулевые элементы массива Х
Помогите создать новый массив Y, в который записать все ненулевые элементы...

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

4
Nishen
467 / 278 / 154
Регистрация: 26.02.2015
Сообщений: 1,316
Завершенные тесты: 2
06.12.2016, 09:53 #2
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <iostream>
#include <time.h>
#include <vector>
 
using namespace std;
 
struct repeatValue {
 
    int value;
    unsigned int numberRepeats;
 
};
 
int main() {
 
    srand(time(NULL));
 
    unsigned int size = 0;
 
    cout
        << "Please, enter size of the array: ";
    cin
        >> size;
 
    int * array = new int[size];
    vector<repeatValue> rvArray;
 
    cout
        << "Initial data: ";
 
    for (unsigned int i = 0; i < size; i++) {
 
        //[-50; 50]
        array[i] = rand() % 101 - 50;
        
        cout
            << array[i]
            << " ";
 
    }
 
    cout
        << endl;
 
    unsigned int coutnValues = 0;
 
    for (unsigned int i = 0; i < size - 1; i++) {
 
        int currentValue = array[i];
        bool isValueRepeats = false;
        unsigned int coutnRepeats = 1;
 
        for (unsigned int j = i + 1; j < size; j++) {
 
            if (currentValue == array[j]) {
 
                coutnRepeats++;
                isValueRepeats = true;
 
            }
 
        }
 
        if (isValueRepeats) {
 
            repeatValue rv = { currentValue, coutnRepeats };
            rvArray.push_back(rv);
 
        }
 
    }
 
    for (vector<repeatValue>::iterator it = rvArray.begin(); it != rvArray.end(); ++it) {
 
        cout
            << "The value "
            << it->value
            << " repeats "
            << it->numberRepeats
            << " times."
            << endl;
 
    }
 
    cout
        << endl;
 
    delete[] array;
 
    system("PAUSE");
    return EXIT_SUCCESS;
 
}
0
Nishen
467 / 278 / 154
Регистрация: 26.02.2015
Сообщений: 1,316
Завершенные тесты: 2
06.12.2016, 10:06 #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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <iostream>
#include <vector>
#include <time.h>
 
using namespace std;
 
struct repeatValue {
    
    int value;
    unsigned int numberRepeats;
 
};
 
 
 
int main() {
 
    srand(time(NULL));
 
    vector<int> values;
    vector<repeatValue> repeatValues;
 
    unsigned int countValues = 0;
 
    cout
        << "Please, enter a number of values: ";
    cin
        >> countValues;
 
    cout
        << "Initial data: ";
 
    for (unsigned int i = 0; i < countValues; ++i) {
 
        values.push_back(rand() % 101 - 50);
        
        cout
            << values.back()
            << " ";
 
    }
 
    cout
        << endl;
 
    for (vector<int>::iterator it = values.begin(); it != values.end(); ++it) {
 
        unsigned int countRepeats = count(it, values.end(), *it);
 
        if (countRepeats > 1) {
 
            repeatValues.push_back({ *it, countRepeats });
 
            cout
                << "The value "
                << repeatValues.back().value
                << " repeats "
                << repeatValues.back().numberRepeats
                << " times "
                << endl;
 
        }
 
    }
 
    system("PAUSE");
    return EXIT_SUCCESS;
 
}
Добавлено через 1 минуту
Цитата Сообщение от dolm33333 Посмотреть сообщение
кссссспмск
Не может идти 5 одинаковых букв подряд в слове (если это вообще человеческий язык). Поэтому Вы нас дурите.
0
Fixer_84
825 / 635 / 645
Регистрация: 30.04.2016
Сообщений: 2,108
07.12.2016, 21:48 #4
Костя26В, вот мой вариант решения данной задачи:

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
#include <iostream>
#include <algorithm>
 
using namespace std;
 
int main()
{
    int N, k, t;
    cout << "Введите размерность массива:" << endl;
    cout << "N = ";
    cin >> N;
    int* A = new int[N];
    cout << "Введите массив:" << endl;
    for (int i = t; i < N; i++)
    {
        cin >> A[i];
    }
    sort(A, A + N);
    cout << "Результат работы программы:" << endl;
    k = t = 0;
    for (int i = t; i < N; i++)
    {
        if (A[i] == A[i+1])
        {
            k++;
        }
        else
        {
            t = k;
            k = 0;
            if (t > 0)
            {
                cout << A[i] << ": " << t + 1 << endl;
            }
        }
    }
    delete[] A;
    system("pause");
    return 0;
}
Добавлено через 22 часа 4 минуты
Костя26В, В строке 14 i = 0 (а не t). Прошу прощения.
0
dolm33333
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 6
08.12.2016, 09:52 #5
Я не знаю как пользоваться этой программой. Вы можете сами,хотя бы частично перевести этот текст,пожалуйста
0
08.12.2016, 09:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2016, 09:52
Привет! Вот еще темы с решениями:

Записать неповторяющиеся элементы в новый контейнер
Помогите, пожалуйста, нужно написать программу на экзамене Написать функцию,...

Массив. Удалить из исходного массива уникальные (не повторяющиеся) элементы
Вводится длина одномерного массива и значения его элементов. Удалить из...

Преобразовать массив, удалив из него все повторяющиеся элементы
Дан целочисленный массив, содержащий n элементов. Преобразовать массив, удалив...

Отрицательные элементы матрицы и их произведение записать в новый файл
Записать матрицу A в файл, отрицательные элементы и их произведение записать в...


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

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

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