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

Элементы массива, которые встречаются только один раз - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 5.00
m1x
5 / 5 / 0
Регистрация: 20.11.2010
Сообщений: 173
27.04.2011, 21:24     Элементы массива, которые встречаются только один раз #1
Нужно создать функцию, которая выводит на экран номера элементов, встречающихся в массиве только один раз

не знаю как это реализовать
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2011, 21:24     Элементы массива, которые встречаются только один раз
Посмотрите здесь:

C++ задача на строки на С.Даны 2 слова.Напечатать только те буквы слов,которые встречаются в обоих словах только один раз.
Из заданной символьной строки выбрать те символы, которые встречаются в ней только один раз, в том порядке, в котором они встречаются в тексте C++
Оставить в строке только те символы, которые встречаются один раз C++
Выбрать из текста только те символы, которые встречаются в нем только один раз C++
Вывести только те слова сообщения, которые встречаются в тексте один раз C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
litoq
10 / 10 / 1
Регистрация: 11.12.2010
Сообщений: 12
27.04.2011, 22:00     Элементы массива, которые встречаются только один раз #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
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
#include <locale.h>
#include <iostream>
#include "stdlib.h"
#include "time.h"
#include <vector>
using namespace std;
 
template< typename T >
 
void F(T* pT, int t_size)
{
    bool ok = 0;
    vector<T> Tout;
 
    for (int i = 0; i < t_size; i++)
    {
        ok = 1;
 
        for(vector<T>::iterator it = Tout.begin(); it != Tout.end(); ++it)
            if (*it == pT[i])
            {
                ok = 0;
                break;
            }
 
        if (!ok)
            break;
 
        if (ok)
            for (int j = 0; j < t_size; j++)
                if ( (i != j) && (pT[i] == pT[j]) )
                {
                    ok = 0;
                    break;
                }
 
        if (ok)
            Tout.push_back(pT[i]);
    }
    for(vector<T>::iterator it = Tout.begin(); it != Tout.end(); ++it)
        cout << *it << " ";
}
 
void main()
{
    setlocale(LC_ALL, "russian");
    srand(time(NULL));
 
    int* pIntArray;
    int size;
 
    cout << "Введите размер массива" << endl;
    cin >> size;
 
    pIntArray = new int[size];
 
    for (int i = 0; i < size; i++)
    {
        pIntArray[i] = rand() % 10;
        cout << " " << pIntArray[i];
    }
 
    cout << endl;
 
    F(pIntArray, size);
}
m1x
5 / 5 / 0
Регистрация: 20.11.2010
Сообщений: 173
27.04.2011, 22:11  [ТС]     Элементы массива, которые встречаются только один раз #3
Цитата Сообщение от litoq Посмотреть сообщение
Наверное как-то так:

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
#include <locale.h>
#include <iostream>
#include "stdlib.h"
#include "time.h"
#include <vector>
using namespace std;
 
template< typename T >
 
void F(T* pT, int t_size)
{
    bool ok = 0;
    vector<T> Tout;
 
    for (int i = 0; i < t_size; i++)
    {
        ok = 1;
 
        for(vector<T>::iterator it = Tout.begin(); it != Tout.end(); ++it)
            if (*it == pT[i])
            {
                ok = 0;
                break;
            }
 
        if (!ok)
            break;
 
        if (ok)
            for (int j = 0; j < t_size; j++)
                if ( (i != j) && (pT[i] == pT[j]) )
                {
                    ok = 0;
                    break;
                }
 
        if (ok)
            Tout.push_back(pT[i]);
    }
    for(vector<T>::iterator it = Tout.begin(); it != Tout.end(); ++it)
        cout << *it << " ";
}
 
void main()
{
    setlocale(LC_ALL, "russian");
    srand(time(NULL));
 
    int* pIntArray;
    int size;
 
    cout << "Введите размер массива" << endl;
    cin >> size;
 
    pIntArray = new int[size];
 
    for (int i = 0; i < size; i++)
    {
        pIntArray[i] = rand() % 10;
        cout << " " << pIntArray[i];
    }
 
    cout << endl;
 
    F(pIntArray, size);
}
ух как все сложно ))
спасибо, попробую разобраться
litoq
10 / 10 / 1
Регистрация: 11.12.2010
Сообщений: 12
27.04.2011, 22:17     Элементы массива, которые встречаются только один раз #4
Ой сорри... я те наврал немного... Тебе номера нужны, а я сами элементы вывел...

Вот:

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
void F(T* pT, int t_size)
{
    bool ok = 0;
    vector<T> Tout;
 
    for (int i = 0; i < t_size; i++)
    {
        ok = 1;
 
        for(vector<T>::iterator it = Tout.begin(); it != Tout.end(); ++it)
            if (pT[*it] == pT[i])
            {
                ok = 0;
                break;
            }
 
        if (!ok)
            break;
 
        if (ok)
            for (int j = 0; j < t_size; j++)
                if ( (i != j) && (pT[i] == pT[j]) )
                {
                    ok = 0;
                    break;
                }
 
        if (ok)
            Tout.push_back(i);
    }
    cout << "--------------------------------" << endl << "# элементов:" << endl;
    for(vector<T>::iterator it = Tout.begin(); it != Tout.end(); ++it)
        cout << *it << " ";
}
m1x
5 / 5 / 0
Регистрация: 20.11.2010
Сообщений: 173
27.04.2011, 22:59  [ТС]     Элементы массива, которые встречаются только один раз #5
Цитата Сообщение от litoq Посмотреть сообщение
Ой сорри... я те наврал немного... Тебе номера нужны, а я сами элементы вывел...

Вот:

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
void F(T* pT, int t_size)
{
    bool ok = 0;
    vector<T> Tout;
 
    for (int i = 0; i < t_size; i++)
    {
        ok = 1;
 
        for(vector<T>::iterator it = Tout.begin(); it != Tout.end(); ++it)
            if (pT[*it] == pT[i])
            {
                ok = 0;
                break;
            }
 
        if (!ok)
            break;
 
        if (ok)
            for (int j = 0; j < t_size; j++)
                if ( (i != j) && (pT[i] == pT[j]) )
                {
                    ok = 0;
                    break;
                }
 
        if (ok)
            Tout.push_back(i);
    }
    cout << "--------------------------------" << endl << "# элементов:" << endl;
    for(vector<T>::iterator it = Tout.begin(); it != Tout.end(); ++it)
        cout << *it << " ";
}
еще раз спасибо
только все очень сложно ))

Добавлено через 26 минут
что-то не работает
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
27.04.2011, 23:05     Элементы массива, которые встречаются только один раз #6
litoq, перемудрили вы чтото

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <algorithm>
 
void func (const int *MAS, const size_t SIZE)
{
    for (size_t i = 0; i < SIZE; i++)
        if (std::count (MAS, MAS + SIZE, MAS[i]) == 1) std::cout << MAS[i] << " ";
}
 
int main()
{
    int MAS[] = {1, 2, 3, 1, 3, 4, 5, 6, 4 };
    func (MAS, sizeof (MAS) / sizeof (*MAS));
    
    return 0;
}
m1x
5 / 5 / 0
Регистрация: 20.11.2010
Сообщений: 173
27.04.2011, 23:12  [ТС]     Элементы массива, которые встречаются только один раз #7
Цитата Сообщение от neske Посмотреть сообщение
litoq, перемудрили вы чтото

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <algorithm>
 
void func (const int *MAS, const size_t SIZE)
{
    for (size_t i = 0; i < SIZE; i++)
        if (std::count (MAS, MAS + SIZE, MAS[i]) == 1) std::cout << MAS[i] << " ";
}
 
int main()
{
    int MAS[] = {1, 2, 3, 1, 3, 4, 5, 6, 4 };
    func (MAS, sizeof (MAS) / sizeof (*MAS));
    
    return 0;
}
только это вывод самих элементов
а мне нужны их номера
т.е.
C++
1
cout>>i;
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
27.04.2011, 23:14     Элементы массива, которые встречаются только один раз #8
ай черт, я сами элементы вывел)
вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <algorithm>
 
void func (const int *MAS, const size_t SIZE)
{
    for (size_t i = 0; i < SIZE; i++)
        if (std::count (MAS, MAS + SIZE, MAS[i]) == 1) std::cout << i + 1  << " ";
}
 
int main()
{
    int MAS[] = {1, 2, 3, 1, 3, 4, 5, 6, 4 };
    func (MAS, sizeof (MAS) / sizeof (*MAS));
 
    return 0;
}
m1x
5 / 5 / 0
Регистрация: 20.11.2010
Сообщений: 173
27.04.2011, 23:15  [ТС]     Элементы массива, которые встречаются только один раз #9
Цитата Сообщение от neske Посмотреть сообщение
ай черт, я сами элементы вывел)
вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <algorithm>
 
void func (const int *MAS, const size_t SIZE)
{
    for (size_t i = 0; i < SIZE; i++)
        if (std::count (MAS, MAS + SIZE, MAS[i]) == 1) std::cout << i + 1  << " ";
}
 
int main()
{
    int MAS[] = {1, 2, 3, 1, 3, 4, 5, 6, 4 };
    func (MAS, sizeof (MAS) / sizeof (*MAS));
 
    return 0;
}
i+1 из-за того, что нумерация с нуля идет, да?)
вобщем понятно все
благодарю!
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
27.04.2011, 23:16     Элементы массива, которые встречаются только один раз #10
Ну можно просто i, это я так, для наглядности.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.04.2011, 23:17     Элементы массива, которые встречаются только один раз
Еще ссылки по теме:

Вывести только те слова сообщения, которые встречаются в нем ровно один раз C++
C++ Напечатать слова, которые встречаются в двух предложениях только один раз (Pascal -> C++)
Выбрать символы, которые встречаются в строке только один раз C++

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

Или воспользуйтесь поиском по форуму:
m1x
5 / 5 / 0
Регистрация: 20.11.2010
Сообщений: 173
27.04.2011, 23:17  [ТС]     Элементы массива, которые встречаются только один раз #11
Цитата Сообщение от neske Посмотреть сообщение
Ну можно просто i, это я так, для наглядности.
большое спасибо за помощь
с меня 3 плюса в репу
Yandex
Объявления
27.04.2011, 23:17     Элементы массива, которые встречаются только один раз
Ответ Создать тему
Опции темы

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