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

Удаление элемента массива сдвигом последующих - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сосчитать количество строк в символьном массиве http://www.cyberforum.ru/cpp-beginners/thread20547.html
Есть у нас массив указателей(массив строк одномерный).Напр, book, dog, mother,book, pistol,brother,dog нужно вывести те элементы,которые встречаются более 1 раза.Выод будет таким: book,dog Как это сделать?Есть идея,чтобы создать новый двумерный массив указателей,в котором 1-ый индекс - это строка,а второй - число,которое показывает,сколько данная срока встречается раз. Вот кусок...
C++ WinAPI Сделать листбокс в главном окне программы средствами WinAPI Возможно глупый вопрос поскольку я только только начал изучать с++. Во общем мне поставлена задача сделать листбокс в главном окне программы. А я пока что умею делать это только в диалоговом окне. Подскажите можно ли сделать главное окно - диалоговым по умолчанию. Либо как поместить лист бокс в главное окно? ЗЫ Всякие MFC/ATL пока не использую, нужно без них. http://www.cyberforum.ru/cpp-beginners/thread20539.html
C++ Пользователь вводит с клавиатуры число, необходимо перевернуть его (число) и вывести на экран.
Сегодняшнее домашнее задание основано именно на этом принципе, однако, вам придется использовать еще и циклы. 1. Пользователь вводит с клавиатуры число - программа должна показать сколько в данном числе цифр. Число вводится целиком в одну переменную. Примечание: Например, пользователь ввел число 12345. На экране должно появиться сообщение о том, что в числе 5 цифр. 2. Пользователь вводит с...
C++ Измерение скорости копирование данных в оперативной памяти!
Там вроде надо два массива содавать я пробовал ничего не вышло((
C++ Поменять стандартный тип данных http://www.cyberforum.ru/cpp-beginners/thread20515.html
Народ, помогите с вопросом. В С++ стандартным типом данных является int. Как поменять это на что-то другое. Например, что бы переменная определенная без типа была char: a = 5; // sizeof(a) == 1
C++ Метод удаления по ключу ребята помогите пожалуста! нужно что то исправить.. ни как не работает метод удаления по ключу.. у меня условие следующее: нужно удалить все марки новее выбраного возраста.(его вводим с клавиатуры) мои марки содержат 4 параметра. (цвет, номинал, страну, возраст) а нужно удалить по одному параметру всю марку разом(то есть весь массив). в менюхе я ввожу число ниже которого все марки... подробнее

Показать сообщение отдельно
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1331 / 864 / 50
Регистрация: 02.01.2009
Сообщений: 2,622
Записей в блоге: 1
09.01.2009, 14:11     Удаление элемента массива сдвигом последующих
Попробуй так
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
#include <iostream> 
#include <string>
using namespace std;
 
void delElem(int *&arr,int len,int &newsize)
{
    int *buff;
    int delsum = 0;//кол-во удаляемых елементов
    int lenbuff;//длина buff
    int j = 0;
 
    for(int i = 1,r = 0; i<len; i++)//!i = 1
    {
        if(arr[i] > arr[r])
        {
            r++;
            delsum++;   //увеличить четчик
        }
    }
 
    lenbuff = len - delsum;//задаем длину buff
    buff = new int[lenbuff];//выделяем память
 
    buff[0] = arr[0];//первый елемент всегда проходит;
    j++;
    for(int i = 1,r = 0; i<len; i++)//!i = 0
    {
        if(arr[i]>arr[r])
        {
            buff[j] = arr[i];//копируем
            j++;
            r++;
        }
    }
    delete[] arr;
    arr = new int[lenbuff];
    newsize = lenbuff;
    for(int i = 0; i< lenbuff; ++i)
        arr[i] = buff[i];
 
    delete[] buff;
}
int main(void)  
{
    int *arr    = new int[9];
    int ar_size = 0;
    //1 2 5 6 3 4 4 5 9
    arr[0] = 1;
    arr[1] = 2;
    arr[2] = 5;
    arr[3] = 6;
    arr[4] = 3;
    arr[5] = 4;
    arr[6] = 4;
    arr[7] = 5;
    arr[8] = 9;
    delElem(arr,9,ar_size);
    cout<<"[ ";
    for(int i = 0; i < ar_size; i++)
        cout<<arr[i]<<" ";
    cout<<"]"<<endl;
    return 0;
}
вроде работает для условия "1 2 5 6 3 4 4 5 9"

Добавлено через 2 минуты 21 секунду
здесь опечатка
C++
1
void delElem(int *&arr,int len,int &newsize)
надо
C++
1
void delElem(int *arr,int len,int &newsize)
 
Текущее время: 13:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru