Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
4 / 4 / 4
Регистрация: 06.03.2011
Сообщений: 319
1

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

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

Author24 — интернет-сервис помощи студентам
Дана последовательность чисел. Найти количество различных чисел в этой последовательности

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


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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.04.2011, 21:13
Ответы с готовыми решениями:

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

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

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

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

5
Эксперт С++
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
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
4 / 4 / 4
Регистрация: 06.03.2011
Сообщений: 319
13.04.2011, 22:05  [ТС] 3
Спасибо большое. единственное мне не понятно что вот это mas[10]={0}и mas[a[i]]++;???? мы из массива 11 элементов заполненных нулями делаем массив в котором элементов столько а[i]?
0
Эксперт С++
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
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
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
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
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 12
23.04.2014, 19:54 6
yuliyayuliya28, А как для этой задачи применить порядок n*log(n)(необходимa сортировка)
0
23.04.2014, 19:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.04.2014, 19:54
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru