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

Одномерный массив - C++

Восстановить пароль Регистрация
 
povtiasd051
2 / 2 / 0
Регистрация: 06.12.2010
Сообщений: 135
21.07.2011, 10:48     Одномерный массив #1
Удалить из одномерного массива все повторяющиеся элементы, оставив их первые вхождения, т.е в массиве должны остаться только различные элементы.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.07.2011, 10:48     Одномерный массив
Посмотрите здесь:

Одномерный массив! C++
C++ одномерный массив А
одномерный массив C++
Одномерный массив C++
Одномерный Массив C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
21.07.2011, 12:28     Одномерный массив #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
#include <iostream.h>
#include <conio.h>
 
void out_mass(int n, int *mass);
int get_not_equal_elem(int n, int *mass, int *out);
 
int main()
{
    cout<<"Enter number elements in massiv: ";
    int n;cin>>n;
    int *mass = new int[n];
    int *out  = new int[n];
    cout<<"Enter elements of massiv\r\n";
    for(int i = 0; i < n; i++)
    {
        cout<<"mass["<<i + 1<<"] = ";
        cin>>mass[i];
    }
    cout<<"Input massiv\r\n";
    out_mass(n, mass);
    int num_not_equal = get_not_equal_elem(n, mass, out);
    cout<<"Removing equal elements\r\n";
    out_mass(num_not_equal, out);
    cout<<"Press any key to continue\r\n";
    getch();
}
 
void out_mass(int n, int *mass)
{
    for(int i = 0; i < n;i++)
        cout<<mass[i]<<" ";
    cout<<endl;
}
 
int get_not_equal_elem(int n, int *mass, int *out)
{
    bool not_equal = true;
    int RetVal = 0,i,j;
    if(mass != NULL)
    {
        out[RetVal] = mass[0];
        for(i = 1; i < n; i++)
        {
            not_equal = true;
            for(j = 0; j <= RetVal; j++)
            {
                if(mass[i] == out[j])
                    not_equal = false;
            }
            if(not_equal)
            {
                RetVal++;
                out[RetVal] = mass[i];
            }
        }
    }
    return RetVal + 1;
}
Миниатюры
Одномерный массив  
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
21.07.2011, 12:29     Одномерный массив #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <algorithm>
#include <iostream>
#include <iterator>
#include <cstdlib>
#include <vector>
 
int main()
{
    std::vector< int > vec(10);
    std::generate(vec.begin(), vec.end(), [](){ return rand() % 10; });
    std::copy(vec.cbegin(), vec.cend(), std::ostream_iterator< int >(std::cout, " "));
    std::cout << std::endl;
    std::sort(vec.begin(), vec.end());
    std::copy(vec.begin()
              , std::unique(vec.begin(), vec.end())
              , std::ostream_iterator< int >(std::cout, " "));
    return 0;
}
Konstantin_D
 Аватар для Konstantin_D
14 / 14 / 2
Регистрация: 21.07.2011
Сообщений: 89
21.07.2011, 12:48     Одномерный массив #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
#include<iostream>
using namespace std;
 
int main()
{
    const int AR_SIZE = 10; // Размер массива
    int Arr[AR_SIZE] = {3,2,5,3,4,1,2,3,7,1}; // Массив с данными
 
    //Выводим исходный массив на экран
    for (int i=0; i<AR_SIZE; i++)
        cout<<Arr[i]<<" ";
    cout<<endl;
 
    //Находим повторяющиеся элементы
    for (int i=1; i<AR_SIZE; i++)
        for (int j=0; j<i; j++)
            if (Arr[j] == Arr[i])
            {
                Arr[i] = 0; //Этот элемент нужно удалить
                    //для простоты обнуляем считая
                    //что 0 в исходном массиве не встречается
                break;
            }
    //Смотрим что получилось :)
    for (int i=0; i<AR_SIZE; i++)
        cout<<Arr[i]<<" ";
    cout<<endl;
 
    return 0;
}
-=ЮрА=-
Заблокирован
Автор FAQ
21.07.2011, 13:46     Одномерный массив #5
Константин,а если в массиве нули все же встречаются???
Konstantin_D
 Аватар для Konstantin_D
14 / 14 / 2
Регистрация: 21.07.2011
Сообщений: 89
21.07.2011, 16:58     Одномерный массив #6
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>
using namespace std;
 
int main()
{
    const int AR_SIZE = 10; // Размер массива
    int Arr[AR_SIZE] = {3,0,5,3,4,1,0,3,7,1}; // Массив с данными
 
    //Выводим исходный массив на экран (для визуального контроля)
    int i, j;
    for (i=0; i<AR_SIZE; i++)
        cout<<Arr[i]<<" ";
    cout<<endl;
 
    //Массив флагов: true - элемент нужен; false - НЕ нужен
    //Массив может быть и динамическим
    bool flag[AR_SIZE];
    int count = AR_SIZE; // Количество разных элементов в массиве
 
    //Находим повторяющиеся элементы
    for (i=1; i<AR_SIZE; i++)
    {
        flag[i] = true;
        for (j=0; j<i; j++)
            if (flag[j] && Arr[j] == Arr[i])
                {
                    flag[i] = false; //Помечаем как повторяющийся
                    count--;
                    break;
                }
    }
 
    //Смотрим что получилось 
    for (i=0; i<AR_SIZE; i++)
        if (flag[i])
                                               cout<<Arr[i]<<" "; //Разные элементы
        else
            cout<<"("<<Arr[i]<<") ";//Элементы, которые повторяются
    cout<<endl;
 
    // Можем создать новый массив 
    int* p_new_arr = new int[count];
    for (i=j=0; i<AR_SIZE; i++)
        if (flag[i])
            p_new_arr[j++] = Arr[i];
    //и вывести его на экран
    cout<<"count = "<<count<<endl;
    for (i=0; i<count; i++)
        cout<<p_new_arr[i]<<" ";
    cout<<endl;
    delete [] p_new_arr;
 
    return 0;
 }
Yandex
Объявления
21.07.2011, 16:58     Одномерный массив
Ответ Создать тему
Опции темы

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