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

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

Восстановить пароль Регистрация
 
Жекон
0 / 0 / 0
Регистрация: 06.12.2013
Сообщений: 5
06.12.2013, 20:17     Повторяющиеся элементы в векторе #1
Подскажите плс, что я делаю не так.
Задача: ввести элементы вектора с клавиатуры, вывести на экран количество повторяющихся элементов ( вариант с отсутствием таких элементов не учитывать)

Я пытался
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;
}
Но выдаёт ошибку Повторяющиеся элементы в векторе
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
МаксимТ
 Аватар для МаксимТ
47 / 47 / 4
Регистрация: 17.08.2012
Сообщений: 225
06.12.2013, 20:23     Повторяющиеся элементы в векторе #2
вектор из пяти элементов а вложенный цикл имеет возможность прочесть шестой элемент
(изза i+k)
Жекон
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;
}
Подсобите плс
МаксимТ
 Аватар для МаксимТ
47 / 47 / 4
Регистрация: 17.08.2012
Сообщений: 225
06.12.2013, 21:26     Повторяющиеся элементы в векторе #4
ну тогда нужно стартовать вложенный цикл не с нуля а с i+1
DU
1477 / 1053 / 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;
}
Yandex
Объявления
06.12.2013, 21:38     Повторяющиеся элементы в векторе
Ответ Создать тему
Опции темы

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