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

Массив: Напишите функцию, которая «убирает» из массива дубли. - C++

Восстановить пароль Регистрация
 
Лёха_
0 / 0 / 0
Регистрация: 02.05.2011
Сообщений: 25
19.06.2012, 13:11     Массив: Напишите функцию, которая «убирает» из массива дубли. #1
Помогите пожалуйста. Я знаю что лёгкое задание ну что то я туплю(..

Создайте одномерный массив (размерность вычисляется в процессе выполнения программы), заполните его значениями. Напишите функцию, которая «убирает» из массива дубли.
Подсказка: при этом размер массива должен уменьшиться!
Для проверки напишите функцию, которая выводит значения всех элементов на экран

Добавлено через 9 минут
Помогите пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2012, 13:11     Массив: Напишите функцию, которая «убирает» из массива дубли.
Посмотрите здесь:

C++ Напишите рекурсивную функцию, которая возвращает среднее из n элементов массива чисел
Напишите функцию, которая заполняет массив случайными числами C++
Напишите функцию, которая вычисляет максимальный элемент массива C++
C++ Напишите рекурсивную функцию, которая возвращает среднее из n элементов массива чисел
Напишите функцию, которая проверяет, отсортирован ли массив вещественных чисел C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Петррр
 Аватар для Петррр
5915 / 3352 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
19.06.2012, 13:14     Массив: Напишите функцию, которая «убирает» из массива дубли. #2
Реализуете сначала свою std::sort, готовые тут.
Потом std::unique, смотреть тут.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
19.06.2012, 13:16     Массив: Напишите функцию, которая «убирает» из массива дубли. #3
Петррр, Сорт и юник - правильный подход, однако не подойдет если нужно учитывать порядок элементов.
Петррр
 Аватар для Петррр
5915 / 3352 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
19.06.2012, 13:18     Массив: Напишите функцию, которая «убирает» из массива дубли. #4
ForEveR, сейчас посмотрим, что ТС скажет.
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
19.06.2012, 13:40     Массив: Напишите функцию, которая «убирает» из массива дубли. #5
Можно сделать так

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
#include <iostream>  
#include <cstdlib>
#include <ctime>
using namespace std;  
 
void func(int*, int); 
 
int main() 
{   
    setlocale(0, "rus");
    srand((unsigned) time(0));
    int *array;  //массив
    int size;    // размер
 
    cout << "Введите размер массива "; 
    cin >> size; 
 
    array = new int [size];  // выделяем память
 
    for ( int i = 0; i < size; i++) 
    array[i] = rand() % 10;           // заполняем случайными числами
 
    cout << "Исходний массив " << endl; // выводим исходный массив
    for ( int i = 0; i < size; i++)  
        cout << array[i] << " "; 
    cout << endl << endl;
 
 
    func(array, size); // передаём в функцию
} 
 
void func( int *array, int size) 
{ 
 
    for ( int i = 0; i < size; i++) 
        for ( int j = i+1; j < size; j++) 
        if(array[i] == array[j]) // если элементы равны
        { 
            array[j] = array[size-1]; 
            size--;                      // сокращаем размер на 1
        }   
 
        cout << "Отсортированный массив " << endl;// выводим отсортированный
 
        for ( int i = 0; i < size; i++) 
            cout << array[i] << " ";  
        cout << endl;
}
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4922 / 2665 / 243
Регистрация: 29.11.2010
Сообщений: 7,420
19.06.2012, 16:10     Массив: Напишите функцию, которая «убирает» из массива дубли. #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
#include <iostream>
#include <cstdlib>
 
void print(int *, int);
void withoutDoubles(int *, int&);
 
int main()
{
    std::srand( time(NULL) );
    int N, *arr;
    std::cin>> N;
    arr = new int[N];
    for (int i=0; i < N; i++)
        arr[i] = rand() % 10;
    print(arr, N);
    withoutDoubles(arr, N);
    print(arr, N);
    system("pause");
    delete []arr;
    return 0;
}
 
void print(int *arr, int N)
{
    for (int i=0; i < N; i++)
        std::cout<< arr[i]<< " ";
    std::cout<< std::endl;
}
 
void withoutDoubles(int *arr, int &N)
{
    int *arr2 = new int[N], counter = 0;
    for (int i=0; i < N; i++)
    {
        bool b = false;
        for (int j=0; j < counter; j++)
            if (arr2[j] == arr[i])
            {
                b = true;
                break;
            }
        if (!b)
            arr2[counter++] = arr[i];
    }
    delete []arr;
    arr = new int[counter];
    for (int i=0; i < counter; i++)
        arr[i] = arr2[i];
    delete []arr2;
    N = counter;
}
Yandex
Объявления
19.06.2012, 16:10     Массив: Напишите функцию, которая «убирает» из массива дубли.
Ответ Создать тему
Опции темы

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