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

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

Войти
Регистрация
Восстановить пароль
 
Жекон
0 / 0 / 0
Регистрация: 06.12.2013
Сообщений: 5
#1

Повторяющиеся элементы в векторе - C++

06.12.2013, 20:17. Просмотров 772. Ответов 4
Метки нет (Все метки)

Подскажите плс, что я делаю не так.
Задача: ввести элементы вектора с клавиатуры, вывести на экран количество повторяющихся элементов ( вариант с отсутствием таких элементов не учитывать)

Я пытался
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
// laboratornaya3.cpp
#include "stdafx.h"
#include <iostream>
#include <vector>
 
using namespace std;
 
int main()
 
{ 
    vector <int> v (5); 
    int kol=0; 
    int i;
for (i=0; i<5;i++)
    cin>>v[i];
    
for ( i=0; i<5; i++)
 { for (int k=1; k<5; k++)
    {if (v[i] == v[i+k]) kol++;
     if (v[i] == v[k]) break; }
                                   }
cout<<"\n kol elem = "<<kol;
    cin.get();
    cin.get();
 
    return 0;
}
Но выдаёт ошибку Повторяющиеся элементы в векторе
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2013, 20:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Повторяющиеся элементы в векторе (C++):

Удалить все повторяющиеся элементы в векторе - C++
доброго времени суток. Столкнулся с проблемой удаления лишних повторов чисел в векторе. Задача состоит в следующем: записать число...

Удалить повторяющиеся объекты в векторе - C++
Есть 2 вектора. Копируем один вектор во второй. Потом во втором нужно удалить все объекты, в которых присутствуют одинаковые поля...

Как грамотно удалить элементы в векторе? - C++
for (vector&lt;fileResult&gt;::iterator p = listExp.begin(); p != listExp.end();p++) { if (p-&gt;select) listExp.erase(p); } делаю...

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

В векторе все элементы, большие среднего арифметического, заменить нулями - C++
В векторе x є Rn все элементы, которые больше среднего арифметическое заменить нулями Помогите понять и решить задание. Как понять у...

Повторяющиеся элементы массива - C++
Есть произвольный массив, в котором нужно отсортировать повторяющиеся элементы по уменьшению и вывести общее кол-во повторений. Решил...

4
МаксимТ
47 / 47 / 4
Регистрация: 17.08.2012
Сообщений: 225
06.12.2013, 20:23 #2
вектор из пяти элементов а вложенный цикл имеет возможность прочесть шестой элемент
(изза i+k)
1
Жекон
0 / 0 / 0
Регистрация: 06.12.2013
Сообщений: 5
06.12.2013, 21:23  [ТС] #3
Цитата Сообщение от МаксимТ Посмотреть сообщение
вектор из пяти элементов а вложенный цикл имеет возможность прочесть шестой элемент
(изза i+k)
Спс, переписал код, ошибки нет, но теперь считает несколько раз кол-во одинаковых чисел при прохождении главного цикла
(т. е. допустим v[0]=1, v[1]=1, kol увеличивается при прохождении v[i] v[k] где i=0 и k=1, и еще раз при i=1 и k=0)
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
#include "stdafx.h"
#include <iostream>
#include <vector>
 
using namespace std;
 
int main()
 
{ 
    vector <int> v (5); 
    int kol=0; 
    int i;
    int k;
for (i=0; i<5;i++)
    cin>>v[i];
    
for ( i=0; i<5; i++)
 { for ( k=0; k<4; k++)
 
 if (v[i] == v[k+1]) 
     if (!(i==k+1))
     kol+=1; 
}
 
cout<<"\n kol elem = "<<kol;
    cin.get();
    cin.get();
 
    return 0;
}
Подсобите плс
0
МаксимТ
47 / 47 / 4
Регистрация: 17.08.2012
Сообщений: 225
06.12.2013, 21:26 #4
ну тогда нужно стартовать вложенный цикл не с нуля а с i+1
0
DU
1483 / 1129 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
06.12.2013, 21:38 #5
если количество повторяющихся элементов - это количество неуникальных и можно юзать stl, то:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "stdafx.h"
#include <algorithm>
#include <iostream>
#include <vector>
 
int main()
{
  std::vector<int> vec;
  for (int i = 0; i < 25; ++i)
    vec.push_back(i % 5);
 
  std::sort(vec.begin(), vec.end());
  std::vector<int>::iterator last = std::unique(vec.begin(), vec.end());
  const std::size_t nonUniqueElementsCount = std::distance(last, vec.end());
  std::cout << "count of non unique elements = " << nonUniqueElementsCount << std::endl;
 
  return 0;
}
1
06.12.2013, 21:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2013, 21:38
Привет! Вот еще темы с ответами:

заменить повторяющиеся элементы - C++
помогите, пожалуйста, с задачкой: заменить повторяющиеся элементы квадратной матрицы NхN (в ней нет 0 и 1) на 1, а неповторяющиеся элементы...

Найти повторяющиеся элементы массива - C++
Необходимо написать программу которая будет находить все повторяющиеся елементы в массиве. Размерность массива 20. Елементы генерируются...

Вывести не повторяющиеся элементы массива - C++
Как сравнить введенные элементы массива и вывести те, что не повторяются? #include &lt;iostream&gt; #include &lt;cstring&gt; int main() ...

алгоритм: заменить повторяющиеся элементы - C++
помогите, пожалуйста, с алгоритмом задачи: заменить повторяющиеся элементы квадратной матрицы NхN (в ней нет 0 и 1) на 1, а неповторяющиеся...


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

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

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