Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
yuliyayuliya28
4 / 4 / 4
Регистрация: 06.03.2011
Сообщений: 319
#1

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

13.04.2011, 21:13. Просмотров 1628. Ответов 5
Метки нет (Все метки)

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

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


C++
1
x=n-count*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
#include"stdafx.h"
#include"iostream"
#include<conio.h>
#include<stdlib.h>
#include<time.h>
using namespace std;
int main()
{
setlocale(LC_ALL,"");
int *a,n,l,i,j,count,x;
srand(time(NULL));
cout<<"Введите количество элементов ";
cin>>n;
cout<<endl;
a=new int[n];
for(int i=0;i<n;i++)
{
a[i]=rand()%10;
cout<<a[i]<<" ";
cout<<endl;
}
count=0;
for(i = 0; i < n; ++i)//находим количество одинаковых элементов
for(j = i; j < n; ++j)
if((i != j) && (a[i] == a[j]))
{
++count;
break;
}
x=n-count*2;
cout << "Количество различных чисел " << x << "\n";
 
 
getch();
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2011, 21:13
Ответы с готовыми решениями:

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

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

Дана последовательность из n целых чисел найти количество элементов этой последовательности кратных числу k
Дана последовательность из n целых чисел найти количество элементов этой...

Дана последовательность целых чисел, за которой следует 0.Найти количество нечетных элементов этой последовательности.
Помогите пожалуйста написать программку!!!!!! Дана последовательность целых...

Дана последовательность целых чисел, за которой следует 0. Найти количество четных элементов этой последовательности.
Дана последовательность целых чисел, за которой следует 0. Найти количество...

5
valeriikozlov
Эксперт С++
4683 / 2509 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
13.04.2011, 21:44 #2
yuliyayuliya28, Ваш код неправильно считает. Вот контрпример: допустим n равно 10, три числа одинаковые, а остальные все числа разные.
Ошибка здесь:
Цитата Сообщение от yuliyayuliya28 Посмотреть сообщение
for(i = 0; i < n; ++i)//находим количество одинаковых элементов
for(j = i; j < n; ++j)
if((i != j) && (a[i] == a[j]))
{
++count;
break;
}
Когда a[i] равно первому такому числу (которое повторяется), то count станет равной 1.
Когда a[i] равно второму такому числу, то count станет равной 2.
В итоге результат получится: "Количество различных чисел 6", а на самом деле результат должен быть равен 7.
Предлагаю вариант:
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
#include"stdafx.h"
#include"iostream"
#include<conio.h>
#include<stdlib.h>
#include<time.h>
using namespace std;
int main()
{
setlocale(LC_ALL,"");
int *a,n,i,count, mas[10]={0};
srand(time(NULL));
cout<<"Введите количество элементов ";
cin>>n;
cout<<endl;
a=new int[n];
for(int i=0;i<n;i++)
{
a[i]=rand()%10;
cout<<a[i]<<" ";
cout<<endl;
mas[a[i]]++;
}
count=0;
for(i = 0; i < 10; ++i)//находим количество одинаковых элементов
if(mas[i]>1)
{
count+=mas[i];
}
cout << "Количество различных чисел " << n-count << "\n";
 
 
getch();
return 0;
}
1
yuliyayuliya28
4 / 4 / 4
Регистрация: 06.03.2011
Сообщений: 319
13.04.2011, 22:05  [ТС] #3
Спасибо большое. единственное мне не понятно что вот это mas[10]={0}и mas[a[i]]++;???? мы из массива 11 элементов заполненных нулями делаем массив в котором элементов столько а[i]?
0
valeriikozlov
Эксперт С++
4683 / 2509 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
14.04.2011, 06:10 #4
Цитата Сообщение от yuliyayuliya28 Посмотреть сообщение
единственное мне не понятно что вот это mas[10]={0}и mas[a[i]]++;???? мы из массива 11 элементов заполненных нулями делаем массив в котором элементов столько а[i]?
Напишу саму идею, код можете сами подредактировать (на самом деле массив a[] там не нужен, можно обойтись одной переменной типа int).
ИДЕЯ:
- так как Вы работаете только с числами в диапазоне [0,9]
Цитата Сообщение от valeriikozlov Посмотреть сообщение
a[i]=rand()%10;
, то заводим массив int mas[10], элементы которого изначально делаем равными 0 (для этого и пишем mas[10]={0}).
Имеем:
0 1 2 3 4 5 6 7 8 9 <- индексы массива mas[]
0 0 0 0 0 0 0 0 0 0 <- значения элементов массива mas[]
Теперь пошагово меняем значения этого массива. Например очередное случайное число равно 3. Тогда массив mas[] будет выглядеть так:
0 1 2 3 4 5 6 7 8 9 <- индексы массива mas[]
0 0 0 1 0 0 0 0 0 0 <- значения элементов массива mas[]
Следующее очередное случайное число равно 5. Тогда массив mas[] будет выглядеть так:
0 1 2 3 4 5 6 7 8 9 <- индексы массива mas[]
0 0 0 1 0 1 0 0 0 0 <- значения элементов массива mas[]
Следующее очередное случайное число равно 3. Тогда массив mas[] будет выглядеть так:
0 1 2 3 4 5 6 7 8 9 <- индексы массива mas[]
0 0 0 2 0 1 0 0 0 0 <- значения элементов массива mas[]
И т.д.
В конце получается, что если какое-то значение массива равно 0, то число (соответствующее этому индексу не попадалось ни разу). Если какое-то значение массива равно 1, то число попалось 1 раз. Если какое-то значение массива больше 1 .... - именно эти значения нас и интересуют.
1
neske
1527 / 894 / 192
Регистрация: 26.03.2010
Сообщений: 3,074
14.04.2011, 14:47 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <algorithm>
#include <iterator>
 
int main (void)
{
    const int SIZE = 10;
    int MAS[SIZE] = {1, 5, 3, 1, 1, 7, 5, 9, 3, 8};
 
    std::cout << "Start array: ";
    std::copy (MAS, MAS+SIZE, std::ostream_iterator <int> (std::cout, " "));
    std::cout << std::endl;
 
    std::sort (MAS, MAS+SIZE);
    std::cout << "Different elements: " << std::unique (MAS, MAS+SIZE) - MAS;
    std::cout << std::endl;
 
    return 0;
}
0
Vikki_19
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 12
23.04.2014, 19:54 #6
yuliyayuliya28, А как для этой задачи применить порядок n*log(n)(необходимa сортировка)
0
23.04.2014, 19:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2014, 19:54

Дана последовательность целых чисел, за которой следует 0. Найти количество четных элементов этой последовательности
Дана последовательность целых чисел, за которой следует 0. Найти количество...

Дана последовательность целых чисел, за которой следует 0. Найти количество элементов этой последовательности, кратных числу К
- Дана последовательность целых чисел, за которой следует 0. Найти количество...

Дана последовательность из n целых чисел. Найти среднее арифметическое чётных чисел из этой последовательности
. Дана последовательность из n целых чисел. Найти среднее арифметическое чётных...


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

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

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