Форум программистов, компьютерный форум, киберфорум
Наши страницы

Работа с массивом структур - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычисление значения y при разных значениях a и b http://www.cyberforum.ru/cpp-beginners/thread652453.html
Только начал изучать c++ помогите с программой
C++ Вычисление выражения по формуле #include <iostream.h> #include <math.h> int main() { double x,y,z,a,b,c,h; cout <<Vvedite x:"; cin>>x; cout <<Vvedite y:"; cin>>y; cout <<Vvedite z:"; http://www.cyberforum.ru/cpp-beginners/thread652448.html
Ответьте новичку C++
Здравствуйте! Собственно, есть пара вопросов, на которые я был бы рад получить ответ: 1. Как известно, используя базовые библиотеки С++ (fstream) я могу записать объект класса в бинарный файл....
Доделать программу C++
Задание : Фамилия и инициалы, должность, год поступления на работу, зарплата. Создать массив объектов. Вывести: а) список работников, стаж работы которых на данном предприятии превосходит заданное...
C++ Вычислить приближённое значение функции http://www.cyberforum.ru/cpp-beginners/thread652421.html
Вычислить приближённое значение функции, используя представление ее в виде ряда Тейлора. Вычисления заканчивать, когда очередное слагаемое окажется по модулю меньше заданного числа E, где 0 < E <...
C++ Строки матрицы Дана произвольная матрица пдсчитать количество строк в которых нет нулевых элементов #include "stdafx.h" #include "iostream" #include "conio.h" #include "iomanip" #include "ctime" using... подробнее

Показать сообщение отдельно
RocBoy-D
32 / 31 / 7
Регистрация: 10.03.2012
Сообщений: 362

Работа с массивом структур - C++

16.09.2012, 00:42. Просмотров 428. Ответов 0
Метки (Все метки)

Здравствуйте! В задаче есть тип данных структура, которая состоит из массива типа int и количества элементов в массиве. Нужно написать функцию удаления одной записи из структуры.
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
struct Vector
{
    int *v; // массив элементов
    int size; // размер массива
};
 
void DelVector (Vector *PVector, int &N)
{
    int num; // номер удаляемой записи
 
    cout << "Input number of array : ";
    cin >> num;
    for (int i = num; i < N - 1; i ++)
    {
        FreeMem (PVector + i);
        (PVector + i) -> size = (PVector + i + 1) -> size;
        (PVector + i) -> v = new int [(PVector + i) -> size];
        memmove ((PVector + i) -> v, (PVector + i + 1) -> v, (PVector + i) -> size);
    }
    FreeMem (PVector + N - 1);
    N --; //количество записей в структуре
}
 
void FreeMem (Vector *PVector)
{
    delete [] PVector -> v;
    PVector -> v = NULL;
}
После этих функций в структурах остаются какие-то случайные числа. Подскажите в чем ошибка?

Добавлено через 4 часа 1 минуту
Нашел в Интернете, что удалить структуру из массива структур нельзя, можно только сдвинуть их на одну позицию влево и уменьшить количество на единицу.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void DelVector (Vector *PVector, int &N)
{
    int num;
 
    cout << "Input number of array : ";
    cin >> num;
    for (int i = num; i < N - 1; i ++)
    {
       (PVector + i) -> size = (PVector + i + 1) -> size;
       (PVector + i) -> v = (PVector + i + 1) -> v;
    }
    N --;
}
Так ли это? На онлайн компиляторе появляется std::bad_alloc, на компьютере вроде работает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.