Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
1 / 1 / 0
Регистрация: 04.09.2012
Сообщений: 6
1

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

06.09.2012, 02:59. Показов 1945. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В общем есть одномерный массив (не смотрите, что написано множество). Мне надо исключить элемент в заданной позиции. Помогите придумать условие.

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();
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.09.2012, 02:59
Ответы с готовыми решениями:

Вставка элемента в заданную позицию, удаление элемента по заданной позиции, поиск заданного элемента
Добавить в класс &quot;Односвязный список&quot; следующие функции: вставка элемента в заданную позицию, удаление элемента по заданной позиции, поиск...

Выполнить сдвиг элементов массива влево на 1 ячейку, начиная с позиции максимального элемента массива
Дан массив действительных чисел размера n. Выполнить сдвиг элементов массива влево на 1 ячейку, начиная с позиции максимального...

Функция выделяет из заданной строки подстроку заданной длины, начиная с заданной позиции
Помогите пожалуйста. Проблемы записью строки. На сколько я понял ,я записываю что то мимо или не туда. Понять что и где делаю не так не...

6
873 / 771 / 173
Регистрация: 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;
 
}
1
 Аватар для Пaтрик
442 / 410 / 132
Регистрация: 21.01.2012
Сообщений: 976
06.09.2012, 09:49 3
А зачем вы создаете массивы int если класс шаблонный?
0
873 / 771 / 173
Регистрация: 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;
 
}
1
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
06.09.2012, 10:26 5
MrCold, А с фига-ли код не правильный? Чем статик массив не угодил?

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

Добавлено через 1 час 57 минут
Как тут тему закрыть?
0
 Аватар для Пaтрик
442 / 410 / 132
Регистрация: 21.01.2012
Сообщений: 976
07.09.2012, 15:04 7
forza_italia, тема может быть закрыта модератором, если в этом есть необходимость
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.09.2012, 15:04
Помогаю со студенческими работами здесь

Написать функцию замены элементов на 8 с заданной позиции до конца массива
Написать функцию замены элементов на 8 с заданной позиции до конца массива (с проверкой истинности позиции). Вот такой код есть: ...

Отсортировать элементы массива находящиеся слева от заданной позиции по убыванию
c) отсортировать элементы массива, находящиеся слева от заданной позиции по убыванию, а элементы массива, находящиеся справа - по...

Выделить из какой-либо строки часть заданной длины, начиная с заданной позиции
Кто знает: выделить из какой-либо строки часть заданной длины, начиная с заданной позиции.

Исключение элемента из массива
Доброго времени суток, прошу помочь в написании данной программы на Tasm. Буду благодарен за любую помощь. Напишите и проверьте...

Исключение элемента из массива
Исключить из массива Р(15) все элементы, не находящиеся в интервале от 1 до 9 Добавлено через 4 минуты + дан массив Z из N...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Что нового в C# 14
UnmanagedCoder 10.03.2025
Предстоящая версия C# 14 обещает принести изменения, которые сделают разработку еще более приятной и эффективной. Что стоит отметить, так это влияние сообщества разработчиков на формирование новых. . .
Формулы поворота
Igor3D 10.03.2025
Добрый день Тема Эти формулы приводятся во множестве тьюториалов, часто под видом "матрица вращения на плоскости". x' = x * cos(a) - y * sin(a) y' = y * cos(a) + x * sin(a) Как бы Вы их. . .
Что нового в .NET 10
UnmanagedCoder 10.03.2025
. NET 10 выходит как релиз с длительной поддержкой (LTS), включающей три года обновлений. В этом обновлении Microsoft сфокусировались на нескольких направлениях: производительность, оптимизация. . .
Отложенное высвобождение, RCU и Hazard Pointer в C++26
NullReferenced 09.03.2025
Многопоточное программирование стало важной частью современной разработки. Когда несколько потоков одновременно работают с общими данными, возникает целый ряд проблем, связанных с синхронизацией и. . .
Неблокирующийся стек на C++26
NullReferenced 09.03.2025
Традиционные способы синхронизации в многопоточном программировании — мьютексы, семафоры, условные переменные — часто превращаются в узкое место в плане производительности. При этом неблокирующиеся. . .
Обработка строк в C++26: Новые возможности string и string_view
NullReferenced 09.03.2025
Новый стандарт C++26 предлагает много улучшений для работы с привычными string и относительно новыми string_view. string_view - это невладеющая ссылка на последовательность символов, появившаяся в. . .
Мой первый аддон для Blender 3D, с помощью нейронки (не зная даже азов пайтона, но это не значит что так и с остальным).
Hrethgir 09.03.2025
Потратил весь день. Пол-дня мне хватило, чтобы понять что с версией с 14B мне не одолеть написание функционального кода, на языке с которым я вообще никак не знаком - пайтон. Версия 22B от другого. . .
Einstein@Home сегодня исполняется двадцать лет!
Programma_Boinc 09.03.2025
Einstein@Home сегодня исполняется двадцать лет! Отправлено 19 февраля 2025 года в 17:20:21 UTC Я хочу поздравить всех наших волонтеров, разработчиков и ученых из Einstein@Home. Мы официально. . .
Заполнители и расширенный набор символов в C++26
NullReferenced 09.03.2025
C++26 представляет два важных обновления: заполнители и расширенный набор символов. Заполнители (placeholders) решают давнюю проблему лаконичности кода в шаблонных выражениях и лямбда-функциях. Они. . .
Контракты в C++26
NullReferenced 09.03.2025
Контракты – это механизм, позволяющий указывать предусловия, постусловия и инварианты для функций в коде. Эта функциональность должна была стать частью C++20, но была исключена на встрече комитета. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru