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

Исключение элемента в заданной позиции из массива - C++

Восстановить пароль Регистрация
 
forza_italia
1 / 1 / 0
Регистрация: 04.09.2012
Сообщений: 6
06.09.2012, 02:59     Исключение элемента в заданной позиции из массива #1
В общем есть одномерный массив (не смотрите, что написано множество). Мне надо исключить элемент в заданной позиции. Помогите придумать условие.

C++ (Qt)
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
69
70
71
72
#include <iostream>
#include <string>
#include <conio.h>
 
using namespace std;
 
const short n = 4;
short m = 4;
 
template < class T > class Sets
{
    private:
        T set[n];
    public:
        T Value(int i);
        void Insert(const T &Value, int i);
        void Delete(int i);
        void Display();
};
 
// Вывод одного элемента массива
template < class T > T Sets < T > ::  Value(int i)
{ 
    return set[i]; 
};
 
// Заполнение массива объекта
template < class T > void Sets < T > :: Insert(const T &Value, int i)
{ 
    set[i] = Value;
};
 
// Вывод массива на экран
template < class T > void Sets < T > :: Display()
{
    cout << endl;
    for (int i = 0; i < n; i++) cout << set[i] << endl;
};
 
template < class T > void Sets < T > :: Delete(const T &Value, int i)
{
    cout << "Множество после удаления: " << endl;
    for (int j = 0; i < m; i++)
    {
        if (j != i) cout << set[j] << endl;
        else m--;
    }
};
 
void main()
{
    setlocale(LC_ALL, "Russian");
    Sets < int > I1, I2;
    I1.Insert(2,0);
    I1.Insert(3,1);
    I1.Insert(4,2);
    I1.Insert(2,3);
    cout << "Первое множество: ";
    I1.Display();
    I1.Delete(3);
 
    I2.Insert(10,0);
    I2.Insert(9,1);
    I2.Insert(9,2);
    I2.Insert(1,3);
    cout << endl << "Второе множество: ";
    I2.Display();
    //I2.Delete(0);
    //I2.Delete(1);
 
    getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.09.2012, 02:59     Исключение элемента в заданной позиции из массива
Посмотрите здесь:

C++ Вставка в строку другой строки, начиная с заданной позиции
C++ вставка элемента в заданную позицию, удаление элемента по заданной позиции, поиск заданного элемента
C++ как в файле удалить n байт, начиная с заданной позиции
C++ Вывод текста на экран с заданной позиции.
Считывание из файла с заданной позиции C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrCold
851 / 749 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
06.09.2012, 09:27     Исключение элемента в заданной позиции из массива #2
forza_italia, код неправильный .гуглите Динамический массив

Цитата Сообщение от forza_italia Посмотреть сообщение
Мне надо исключить элемент в заданной позиции. Помогите придумать условие.
примерно так :
myarray - ваш массив, sizeArray - размер массива , pos - от куда удаляем

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <algorithm>
......................................
 
        void Remove( int pos );
};
 
template < class T > void ClassArray < T > :: Remove( int pos )
{   
    sizeArray  = sizeArray - 1;
    int *tmp = new int [ sizeArray  ];
    std::copy ( myarray, myarray + pos  , tmp );
    std::copy ( myarray + ( pos + 1), myarray  +  ( sizeArray  + 1 ), tmp +  pos );
 
    delete[] myarray;
 
    myarray = new int [ sizeArray ];
    std::copy ( tmp, tmp + sizeArray , myarray );
    delete[] tmp;
 
}
Пaтрик
 Аватар для Пaтрик
394 / 387 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
06.09.2012, 09:49     Исключение элемента в заданной позиции из массива #3
А зачем вы создаете массивы int если класс шаблонный?
MrCold
851 / 749 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
06.09.2012, 10:02     Исключение элемента в заданной позиции из массива #4
Исправил
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <algorithm>
......................................
 
        void Remove( int pos );
};
template < class T > void ClassArray < T > :: Remove( int pos )
{   
    sizeArray = sizeArray - 1;
    T *tmp = new T [ sizeArray ];
    std::copy ( myarray, myarray + pos  , tmp );
    std::copy ( myarray + ( pos + 1), myarray  +  ( sizeArray + 1 ), tmp +  pos );
 
    delete[] myarray;
 
    myarray = new T [ sizeArray ];
    std::copy ( tmp, tmp + sizeArray , myarray );
    delete[] tmp;
 
}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
06.09.2012, 10:26     Исключение элемента в заданной позиции из массива #5
MrCold, А с фига-ли код не правильный? Чем статик массив не угодил?

forza_italia, Удалить элемент из статического массива нельзя. Можно обнулить и сдвинуть элементы.
forza_italia
1 / 1 / 0
Регистрация: 04.09.2012
Сообщений: 6
07.09.2012, 14:49  [ТС]     Исключение элемента в заданной позиции из массива #6
Цитата Сообщение от Пaтрик Посмотреть сообщение
А зачем вы создаете массивы int если класс шаблонный?
Я просто удалил ненужную здесь часть кода.

Добавлено через 1 час 57 минут
Как тут тему закрыть?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.09.2012, 15:04     Исключение элемента в заданной позиции из массива
Еще ссылки по теме:

Вставка подстроки в строку с заданной позиции C++
Описать в виде отдельной функции определение минимального элемента в заданной части массива C++
C++ Написать функцию замены элементов на 8 с заданной позиции до конца массива

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

Или воспользуйтесь поиском по форуму:
Пaтрик
 Аватар для Пaтрик
394 / 387 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
07.09.2012, 15:04     Исключение элемента в заданной позиции из массива #7
forza_italia, тема может быть закрыта модератором, если в этом есть необходимость
Yandex
Объявления
07.09.2012, 15:04     Исключение элемента в заданной позиции из массива
Ответ Создать тему
Опции темы

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