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

Как сделать что бы повторяющиеся элементы выводило и считало только один раз? - C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
Альберт37
1 / 1 / 0
Регистрация: 13.10.2010
Сообщений: 26
09.11.2010, 15:40     Как сделать что бы повторяющиеся элементы выводило и считало только один раз? #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
#include <stdio.h>;
#include <math.h>;
int m,i,j,s,n;
void main()
{
int arr[100];
  printf("\nУкажите размер массива - ");
scanf("%d",&m);
  printf("\nВведите элеменыты массива : ");
  for (i=0;i<m;i++)
  scanf("%d",&arr[i]);
s=0;
  for (i=0;i<m;i++)
{
    for (j=i+1;j<m;j++)
{
if (arr[i]==arr[j])
{
s=s+1;
printf ("\nПовторяющееся число %d",arr[i]);}}
}
printf ("\nВсего повторяющихся чисел %d",s);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2010, 15:40     Как сделать что бы повторяющиеся элементы выводило и считало только один раз?
Посмотрите здесь:

C++ Напечатать только те буквы слов, которые встречаются в обоих словах только один раз
Создать новый массив, содержащий только те элементы, которые встрачаются в исходном один раз C++
C++ Элементы массива, которые встречаются только один раз
C++ Как определить переменную только один раз?
C++ Напечатать только те буквы слов, котрые встречаются в обоих словах только один раз
C++ Массив: Удалить все повторяющиеся элементы, оставив в массиве только один.
Выбрать из текста только те символы, которые встречаются в нем только один раз C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1919 / 1528 / 139
Регистрация: 31.05.2009
Сообщений: 2,892
09.11.2010, 17:48     Как сделать что бы повторяющиеся элементы выводило и считало только один раз? #2
Если порядок элементов в массиве не важен, можешь просто при совпадении элементов менять местами текущий элемент(который сравнивается со всеми остальными) с последним и уменьшать размер массива на 1.
qwarta
 Аватар для qwarta
58 / 58 / 5
Регистрация: 20.11.2009
Сообщений: 215
09.11.2010, 20:12     Как сделать что бы повторяющиеся элементы выводило и считало только один раз? #3
rangerx,
в приведенном Альберт37 коде сравниваются соседние элементы массива. А если пользователь ввел такой массив: {11,2,32,21,2, и т.д.} ? Мне кажется придется сначала отсортировать массив.

Альберт37,
1. После #include <stdio.h> и #include <math.h> точка с запятой не ставится.
2. Если задан статический массив в строке 6, зачем нужны строки 7 и 8? Если же размер массива должен быть введен пользователем, придется создавать динамический массив
C
1
2
3
4
5
6
int *arr,m;
printf("\nУкажите размер массива - ");
scanf("%d",&m);
arr=malloc(m*sizeof(int));
.....
free(arr);
rangerx
1919 / 1528 / 139
Регистрация: 31.05.2009
Сообщений: 2,892
09.11.2010, 20:37     Как сделать что бы повторяющиеся элементы выводило и считало только один раз? #4
Цитата Сообщение от qwarta Посмотреть сообщение
в приведенном Альберт37 коде сравниваются соседние элементы массива
А я ничего и не говорил про код который выложил TC. Я всего лишь предложил алгоритм. )
Цитата Сообщение от qwarta Посмотреть сообщение
А если пользователь ввел такой массив: {11,2,32,21,2, и т.д.} ?
Без разницы.
Цитата Сообщение от qwarta Посмотреть сообщение
Мне кажется придется сначала отсортировать массив.
Необязательно.
qwarta
 Аватар для qwarta
58 / 58 / 5
Регистрация: 20.11.2009
Сообщений: 215
09.11.2010, 20:54     Как сделать что бы повторяющиеся элементы выводило и считало только один раз? #5
Понял. Просто ТС ( увы, как и я ) может неправильно интерпретировать фразу
при совпадении элементов
, думая о приведенном коде.
Альберт37
1 / 1 / 0
Регистрация: 13.10.2010
Сообщений: 26
09.11.2010, 23:13  [ТС]     Как сделать что бы повторяющиеся элементы выводило и считало только один раз? #6
Ну если проше говоря то мне дали задание такое ...
Дан массив,содержащий е более 100 целых чисел. Вывести на экран все различные элементы массива и определить их количество(повторяющиеся элементы выводить и считать один раз). Если повторяющихся элементов нет вывести сообщение...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2010, 00:27     Как сделать что бы повторяющиеся элементы выводило и считало только один раз?
Еще ссылки по теме:

C++ Как сделать так что бы выводило не -1.#IND
C++ Повторяющиеся числа из первого массива занести во второй массив только один раз
Что можно сделать, что бы конструктор вызывался один раз при агрегировании? C++
C++ Как реализовать функцию-член, которую можно вызвать только один единственный раз?
C++ Как сделать что бы число зарандомилось один раз

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

Или воспользуйтесь поиском по форуму:
rangerx
1919 / 1528 / 139
Регистрация: 31.05.2009
Сообщений: 2,892
10.11.2010, 00:27     Как сделать что бы повторяющиеся элементы выводило и считало только один раз? #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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
void swap(int* a, int* b)
{
    int t = *a;
    *a = *b;
    *b = t;
}
 
int unique(int arr[], int size)
{
    int m, n;
 
    for(m = 0; m < size-1; ++m)
    {
        for(n = m+1; n < size; ++n)
        {
            if(arr[m] == arr[n])
            {
                swap(&arr[m], &arr[size-1]);
                --m;
                --size;
                break;
            }
        }
    }
 
    return size;
}
 
int main()
{
    int* a;
    int uniqueCount;
    int i;
    int size;
 
    do
    {
        printf("Input array size(1-100): ");
        scanf("%d", &size);
 
    }while(size < 1 || size > 100 );
 
    a = malloc(size * sizeof(int));
    srand( time(NULL) );
 
    puts("Array:");
    for(i = 0; i < size; ++i)
    {
        a[i] = rand()%20;
        printf("%d ", a[i]);
    }
 
    if( (uniqueCount = unique(a, size)) == size) printf("\nAll unique.\n");
    else
    {
        printf("\nUnique:\n");
        for(i = 0; i < uniqueCount; ++i)
            printf("%d ", a[i]);
        printf("\nCount: %d\n", uniqueCount);
    }
 
    free(a);
    return 0;
}
Yandex
Объявления
10.11.2010, 00:27     Как сделать что бы повторяющиеся элементы выводило и считало только один раз?
Ответ Создать тему
Опции темы

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