C++ addition of the element at the end of the dynamic mass



  • Help me find out why I'm not working. The sum of its elements should be added at the end of the dynamic.

    My code is:

    #include "stdafx.h"
    #include <iostream>
    using namespace std;
    int* createArray(int*, int);
    void fillArray(int*, int);
    void printArray(int*, int);
    void deleteArray(int*);
    void addElemet(int*, int);
    int _tmain(int argc, _TCHAR* argv[])
    {
        setlocale(LC_ALL, "rus");
        int num = 0;
        cout << "Введите количество элементов массива ";
        cin >> num;
        int sum = 0;
        int *pArray = NULL;
        pArray = createArray(pArray, num);
        fillArray(pArray, num);
        addElemet(pArray, num);
        printArray(pArray, num);
        deleteArray(pArray);
        return 0;
    }
    int* createArray(int *massiv, int number) //создание динамического массива
    {
        return massiv = new int[number];    
    }
    void fillArray(int* massiv, int number) //ввод данных в массив
    {
        for (int i = 0; i < number; i++)
        {
            cout << "Введите " << i + 1 << "-тый элемент массива ";
            cin >> massiv[i];
        }
        cout << "------------------------------------------------------------------------------" << endl;
    }
    void printArray(int* massiv, int number) // вывод массива на печать
    {
        for (int i = 0; i < number; i++)
        {
            cout << massiv[i] << " ";
        }
        cout << endl;
    }
    void deleteArray(int* massiv) //Очистка памяти
    {
        delete[] massiv;
    }
    void addElemet(int *massiv, int number) //добавление элемента в конец массива
    {
        int *temp = NULL;
        int numTemp = number + 1;
        int sum = 0;
        temp = createArray(temp, numTemp); // создаем временный массив
        for (int i = 0; i < number; i++)
        {
            temp[i] = i; //massiv[i]; // копируем данные со старого массива
            sum += massiv[i];
        }
        temp[numTemp] = sum; // не добавляет элемент в конец массива, при выводе на экран скопированные элементы отображаются нормально, а последний отображает набор цифр 
        deleteArray(massiv); // удаляем старый массив
    
    massiv = createArray(temp, numTemp); 
    
    massiv = temp; //копируем временный массив в новый.
    deleteArray(temp); //удаляем временный массив
    

    }



  • By the way, it's not hard to correct:

    int * addElemet(int *massiv, int number) //добавление элемента в конец массива
    {
        int *temp = NULL;
        int numTemp = number + 1;
        int sum = 0;
        temp = createArray(temp, numTemp); // создаем временный массив
        for (int i = 0; i < number; i++)
        {
            temp[i] = massiv[i]; // копируем данные со старого массива
            sum += massiv[i];
        }
        temp[number] = sum; // добавляет элемент в конец массива, при выводе на экран скопированные элементы отображаются нормально, а последний отображает набор цифр 
        deleteArray(massiv); // удаляем старый массив
        return temp
    }
    

    and main:

    pArray = addElemet(pArray, num);
    

    Edible plain C style works.

    To make it look like,

        int * addElemet(int *massiv, int number) //добавление элемента в конец массива
    {
        int *temp = NULL;
        temp = createArray(temp, number+1); // создаем временный массив
        temp[number] = 0;
        for (int i = 0; i < number; i++)
            temp[number] += (temp[i] = massiv[i]); // копируем данные со старого массива
        deleteArray(massiv); // удаляем старый массив
        return temp
    }
    

    Maximum laconic:

    #include <iostream>
    using namespace std;
    

    int * add_element(int *source, int size) {
    int *dest = new int[size+1], i;
    for (i = 0, dest[size]=0; i<size; i++)
    dest[size] += (dest[i] = source[i]);
    delete[] source;
    return dest;
    }

    int main()
    {
    const int size = 5;
    int *initial = new int[size], i;
    for (i=0; i<size; i++)
    initial[i] = i;
    int *result = add_element(initial, size);
    for (i=0; i<=size; i++)
    cout << result[i] << endl;
    }

    Consolidation:

    0
    1
    2
    3
    4
    10




Suggested Topics

  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2