Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
n00b.vcxproj
Кодер
47 / 46 / 7
Регистрация: 10.10.2010
Сообщений: 229
1

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

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

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

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

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

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

Количество различных элементов в монотонном массиве
Формат входных данных Сначала задано число N - количество элементов в...

Количество различных элементов в монотонном массиве
Пожалуйста помогите решить сначала задано N - количество элементов в массиве...

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

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

Найти количество различных элементов в массиве
Ребят помогите решить задачу на с++. Условие: Дан целочисленный массив...

10
Choopa
18 / 18 / 5
Регистрация: 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();
 
}
1
silent_1991
Эксперт С++
5013 / 3073 / 271
Регистрация: 11.11.2009
Сообщений: 7,045
Завершенные тесты: 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.
1
n00b.vcxproj
Кодер
47 / 46 / 7
Регистрация: 10.10.2010
Сообщений: 229
19.10.2011, 20:35  [ТС] 4
silent_1991, да, я знаю
там должно быть 1 2 2
0
Kastaneda
Jesus loves me
Эксперт С++
5020 / 3033 / 348
Регистрация: 12.12.2009
Сообщений: 7,646
Записей в блоге: 2
Завершенные тесты: 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;
}
1
n00b.vcxproj
Кодер
47 / 46 / 7
Регистрация: 10.10.2010
Сообщений: 229
19.10.2011, 20:50  [ТС] 6
Kastaneda, а для чего применять указатель к массиву в Вашем цикле?
0
Kastaneda
Jesus loves me
Эксперт С++
5020 / 3033 / 348
Регистрация: 12.12.2009
Сообщений: 7,646
Записей в блоге: 2
Завершенные тесты: 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;
}
но имхо, через указатель красивее. Тут получается, что переменная-счетчик цикла меняет свое значение в теле цикла, что не есть хорошо.
1
Thinker
Эксперт С++
4236 / 2210 / 203
Регистрация: 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++;
2
Kastaneda
19.10.2011, 21:06
  #9

Не по теме:

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

0
Thinker
Эксперт С++
4236 / 2210 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.10.2011, 21:09 10
Цитата Сообщение от Kastaneda Посмотреть сообщение

Не по теме:

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

Не по теме:

Спасибо)

0
n00b.vcxproj
Кодер
47 / 46 / 7
Регистрация: 10.10.2010
Сообщений: 229
19.10.2011, 21:11  [ТС] 11
всем спасибо за актив, тема закрыта
0
19.10.2011, 21:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.10.2011, 21:11

Посчитать количество различных элементов в массиве
Дан линейный массив целых чисел ввести с клавиатуры не менее 10 элементов и...

Найти количество различных элементов в массиве
Дан целочисленный массив размера N, все элементы которого упоря-дочены (по...

Определить количество различных элементов в массиве
Задан массив действительных чисел. Определить количество различных элементов в...


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

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

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