Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2019, 19:16   #1
Zorall
Новичок
Джуниор
 
Регистрация: 19.01.2019
Сообщений: 2
По умолчанию Задача на динамический массив с++

Даны два одномерных массива целых чисел A и В. Вычислить одномерный
массив С, который содержит: Все элементы массива A, кроме присутствующих в массиве B несколько раз. Все массивы должны быть динамическими.
Написала программу, но она не работает, помогите найти ошибку, пожалуйста.
Код:
#include <iostream>

using namespace std;
int* createArray(int* array, int length)
{
    return array = new int[length];
}
void fillArray(int* array, int length) //ввод данных в массив
{
    cout << "Write down elements of array" << endl;
    for(int i=0;i<length;i++)
        cin >> array[i];
}
void printArray(int* array, int length) // вывод массива на печать
{
    for (int i = 0; i < length; i++)
    {
        cout << array[i] << " ";
    }
    cout << endl;
}
void deleteArray(int* array) //Очистка памяти
{
    delete[] array;
}
void addElements(int* array, int length, int* a, int na)
{
    int *temp = nullptr;
    temp = createArray(temp, length);
    if (length > 1)
    {
        for (int i=0;i<length-1;i++)
             temp[i]=array[i];
        deleteArray(array);
    }
    temp[length]=a[na];
    for (int i=0;i<length;i++)
        array[i]=temp[i];
    deleteArray(temp);
}
int main()
{
    int sizea, sizeb,k,sizec=0,i;
    int *a=nullptr, *b=nullptr;
    do
    {
        cout<< "Write down size of A" << endl;
        cin >> sizea;
        if (sizea <= 0)
        cout << "Wrong size of array, try again " << endl;
    } while (sizea <= 0);
    a = createArray(a,sizea);
    fillArray(a, sizea);
    do
    {
        cout<< "Write down size of B" << endl;
        cin >> sizeb;
        if (sizeb <= 0)
        cout << "Wrong size of array, try again " << endl;
    } while (sizeb <= 0);
    b = createArray(b,sizeb);
    fillArray(b, sizeb);
    int *c=nullptr;
    for ( i=0;i<sizea;i++)
    {
        k=0;
        for (int j=0;j<sizeb;j++)
            if (a[i]==b[j])
                k++;
        if(k<2)
        {

            addElements(c,sizec,a,i);
            sizec++;
        }
    }
    printArray(c, sizec);
}
Zorall вне форума Ответить с цитированием
Старый 19.01.2019, 19:27   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Начните с того, что размер массива с надо увеличивать до выделения памяти под элемент, а не после.
p51x на форуме Ответить с цитированием
Старый 19.01.2019, 20:49   #3
Zorall
Новичок
Джуниор
 
Регистрация: 19.01.2019
Сообщений: 2
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Начните с того, что размер массива с надо увеличивать до выделения памяти под элемент, а не после.
Изменила код в соответствии с вашим замечанием, но это не решает проблемы
Zorall вне форума Ответить с цитированием
Старый 19.01.2019, 20:55   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Ну так пройдити глазами по addElements при первом проходе: с = nullptr; sizec = 1; Что произойдет? Кто вообще с создает? Зачем вы пишите за границей массива temp[length] ?
p51x на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача C++ Двумерный динамический массив Joesidorov Общие вопросы C/C++ 3 10.12.2015 23:44
Задача по C++(динамический массив, работа с указателями) UJIN2013 Помощь студентам 0 23.12.2012 16:12
Задача на двумерный динамический массив Delphi molodoy95 Помощь студентам 3 26.12.2011 22:05
Динамический массив - или всё таки не динамический? vedro-compota Общие вопросы C/C++ 30 10.12.2010 23:22
задача на динамический массив Icecream Помощь студентам 3 31.05.2009 11:32