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

Одноразовый вывод повторяющихся значений - C++

Восстановить пароль Регистрация
 
Marshal_Женя
 Аватар для Marshal_Женя
0 / 0 / 0
Регистрация: 10.01.2011
Сообщений: 14
16.01.2011, 13:39     Одноразовый вывод повторяющихся значений #1
Задача:
Написать шаблонную функцию, котороая будет принимать массивы любого типа
C++
1
2
3
4
const int size=10;
    int mas[size]={ 1, 2, 3, 4, 1, 2, 3, 4, 5, 6};
    char mas[size]={'!', '@', '!', '$', '%', '^', '$', '^', '^', ')'}; 
    double mas[size]={1.1, 2.2, 1.1, 3.3, 4.4, 5.5, 5.5, 3.3, 2.2, 9.9};
и выводила повторяющиеся значения(значение должно выводиться один раз)
например:

1, 2, 3, 4, 1, 2, 3, 4, 5, 6
а вывести на экран
1,2,3,4


Заранее спасибо!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
16.01.2011, 14:12     Одноразовый вывод повторяющихся значений #2
Marshal_Женя,
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
#include <iostream>
#include <algorithm>
#include <vector>
#include <iterator>
 
template <class T, int size>
void templ_func(const T (&arr)[size])
{
   bool key, _key;
   std::vector<T> vec;
 
   for(int i = 0; i < size; ++i)
   {
       key = true;
       for(int j = 0; j < size; ++j)
           if(i != j && arr[i] == arr[j])
               key = false;
 
        if(!key)
        {
            if(!vec.empty())
            {
                for(int k = 0; k < vec.size(); ++k)
                    if(vec[k] == arr[i])
                        key = true;
 
                if(!key)
                    vec.push_back(arr[i]);
            }
 
            else
                vec.push_back(arr[i]);
        }
   }
 
   std::copy(vec.begin(), vec.end(), std::ostream_iterator<T>(std::cout, " "));
}
 
int main()
{
    int mas[]={ 1, 2, 3, 4, 1, 2, 3, 4, 5, 6};
    templ_func(mas);
    return 0;
}
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
16.01.2011, 14:21     Одноразовый вывод повторяющихся значений #3
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
#include <iostream>
 
template< typename T >
void repeat_search(T *arr, size_t size)
{
    T *res = new T [size / 2 + 1];
    size_t len = 0;
    
    for (size_t i = 0; i < size; ++i)
    {
        for (size_t j = i + 1; j < size; ++j)
        {
            if (arr[i] == arr[j])
            {
                bool key = false;
 
                for (size_t k = 0; k < len; ++k)
                {
                    if (res[k] == arr[i])
                    {
                        key = true;
 
                        break;
                    }
                }
 
                if (!key)
                    res[len++] = arr[i];
            }
        }
    }
 
    for (size_t i = 0; i < len; ++i)
        std::cout << res[i] << "  ";
 
    std::cout << std::endl;
 
    delete [] res;
}
 
int main()
{
    const int size = 10;
 
    int imas[size] = {1, 2, 3, 4, 1, 2, 3, 4, 5, 6};
    char cmas[size] = {'!', '@', '!', '$', '%', '^', '$', '^', '^', ')'}; 
    double dmas[size] = {1.1, 2.2, 1.1, 3.3, 4.4, 5.5, 5.5, 3.3, 2.2, 9.9};
 
    repeat_search(imas, size);
    repeat_search(cmas, size);
    repeat_search(dmas, size);
 
    return 0;
}
Добавлено через 4 минуты
asics, а если я вашей функции на вход динамический массив подам?
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
16.01.2011, 19:59     Одноразовый вывод повторяющихся значений #4
silent_1991, Код был написан по трех тестах в первом посте темы и я там не наблюдаю дин. масивы.
Yandex
Объявления
16.01.2011, 19:59     Одноразовый вывод повторяющихся значений
Ответ Создать тему
Опции темы

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