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

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

Войти
Регистрация
Восстановить пароль
 
n00b.vcxproj
Кодер
46 / 45 / 2
Регистрация: 10.10.2010
Сообщений: 229
#1

Количество различных элементов в монотонном массиве - C++

19.10.2011, 18:58. Просмотров 1019. Ответов 10
Метки нет (Все метки)

Формат входных данных:
Сначала задано число N - количество элементов в массиве (N не превосходит 100). Далее через пробел записаны N целых чисел - элементы массива (числа типа int/longint). Элементы массива отсортированы по неубыванию (каждый элемент массива не меньше предыдущего элемента, например, {1, 2, 2, 3, 3, 3}).

Формат выходных данных
Необходимо вывести количество различных чисел в этом массиве.

пример:
ввод:
3
1 2 1
вывод:
2

Прошу помочь с циклом, определяющим количество различных чисел в массиве.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.10.2011, 18:58     Количество различных элементов в монотонном массиве
Посмотрите здесь:

Найти количество различных элементов в массиве. C++
C++ Посчитать количество различных элементов в массиве
Подсчитать количество различных по значению элементов в массиве C++
C++ Найти количество различных элементов в массиве
Количество различных элементов в монотонном массиве C++
C++ Количество различных элементов в монотонном массиве
C++ Найти количество различных элементов в массиве
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Choopa
17 / 17 / 0
Регистрация: 03.04.2011
Сообщений: 89
19.10.2011, 19:10     Количество различных элементов в монотонном массиве #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream.h>
#include <set.h>
void main()
{
 set<int>k;
 int n,i,a;
 cin>>n;
 for(i=0;i<n;i++)
 {  cin>>a;
 k.insert(a);
 }
 cout<<k.size();
 
}
silent_1991
Эксперт С++
4952 / 3028 / 149
Регистрация: 11.11.2009
Сообщений: 7,026
Завершенные тесты: 1
19.10.2011, 19:53     Количество различных элементов в монотонном массиве #3
Как вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
 
int main()
{
    std::vector< int > vec((std::istream_iterator< int >(std::cin)), std::istream_iterator< int >());
 
    std::cout << std::unique(vec.begin(), vec.end()) - vec.begin() << std::endl;
 
    return 0;
}
Добавлено через 1 минуту
n00b.vcxproj, кстати, у вас условие и пример противоречат. В условии сказано, что элементы отсортированы по неубыванию, а в примере дана последовательность 1 2 1.
n00b.vcxproj
Кодер
46 / 45 / 2
Регистрация: 10.10.2010
Сообщений: 229
19.10.2011, 20:35  [ТС]     Количество различных элементов в монотонном массиве #4
silent_1991, да, я знаю
там должно быть 1 2 2
Kastaneda
Форумчанин
Эксперт С++
4261 / 2793 / 219
Регистрация: 12.12.2009
Сообщений: 7,120
Записей в блоге: 1
Завершенные тесты: 1
19.10.2011, 20:43     Количество различных элементов в монотонном массиве #5
если "руками", то примерно так:
C++
1
2
3
4
5
6
while(ptr != arr+size)//ptr - pointer to array, arr - array, size - size of array
{
   int tmp = *ptr;
   while(*ptr == tmp) ++ptr;
   ++count;
}
n00b.vcxproj
Кодер
46 / 45 / 2
Регистрация: 10.10.2010
Сообщений: 229
19.10.2011, 20:50  [ТС]     Количество различных элементов в монотонном массиве #6
Kastaneda, а для чего применять указатель к массиву в Вашем цикле?
Kastaneda
Форумчанин
Эксперт С++
4261 / 2793 / 219
Регистрация: 12.12.2009
Сообщений: 7,120
Записей в блоге: 1
Завершенные тесты: 1
19.10.2011, 20:57     Количество различных элементов в монотонном массиве #7
Цитата Сообщение от n00b.vcxproj Посмотреть сообщение
Kastaneda, а для чего применять указатель к массиву в Вашем цикле?
Для удобства, хотя можно так сделать:
C++
1
2
3
4
5
6
7
for(int i=0; i<size; i++)
{
   int tmp = arr[i];
   while(tmp == arr[i] && i<size)//в предыдущем коде во втором while тоже нужно добавить проверку на выход за границу массива
      ++i;
   ++count;
}
но имхо, через указатель красивее. Тут получается, что переменная-счетчик цикла меняет свое значение в теле цикла, что не есть хорошо.
Thinker
Эксперт C++
4219 / 2193 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.10.2011, 21:03     Количество различных элементов в монотонном массиве #8
Я бы так написал:
C++
1
2
3
4
count = n > 0 ? 1 : 0;
for (i = 1; i < n; i++)
   if (a[i] != a[i - 1])
      count++;
Kastaneda
19.10.2011, 21:06
  #9

Не по теме:

Thinker, да, так лучше)

Thinker
Эксперт C++
4219 / 2193 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.10.2011, 21:09     Количество различных элементов в монотонном массиве #10
Цитата Сообщение от Kastaneda Посмотреть сообщение

Не по теме:

Thinker, да, так лучше)

Не по теме:

Спасибо)

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.10.2011, 21:11     Количество различных элементов в монотонном массиве
Еще ссылки по теме:

В одномерном массиве найти количество различных элементов C++
Найти количество различных элементов в данном массиве C++
C++ Определить количество различных элементов в массиве
Найти количество различных элементов в данном массиве C++
Найти количество различных элементов в массиве C++

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

Или воспользуйтесь поиском по форуму:
n00b.vcxproj
Кодер
46 / 45 / 2
Регистрация: 10.10.2010
Сообщений: 229
19.10.2011, 21:11  [ТС]     Количество различных элементов в монотонном массиве #11
всем спасибо за актив, тема закрыта
Yandex
Объявления
19.10.2011, 21:11     Количество различных элементов в монотонном массиве
Ответ Создать тему
Опции темы

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