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

Метод слияния двух массивов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Структура в функции http://www.cyberforum.ru/cpp-beginners/thread766378.html
Помогите разобраться, буду очень благодарен. Цитирую вопрос с лабораторной: У C++ забезпечується можливість передавати як структури за значенням, так і адресу структури. Якщо glitz є змінною...
C++ привязка динамической библиотеки, написанной на масм32 к проекту с++ программа калькулятор больших чисел, правильно работает только сложение, но нам пока собственно наплевать, ибо сложение работает и хотя бы его надо запихнуть в проект с++, что собственно ниже и... http://www.cyberforum.ru/cpp-beginners/thread766376.html
Создание из двух числовых массивов третьего C++
Есть массив 1 3 22 23 24 43 4 23 24 25 44 5 24 25 26 45 6 25 26 27 46 и массив 2 1 21 41 61 81 3 23 43 63 83 4 24 44 64 84 5 25 45 65 85
C++ Сформировать типизированный файл
Сформировать типизированный файл, в котором хранится информация о сотрудниках подразделения: ФИО, место рождения, год рождения. На его основе сформировать файл сотрудников, родившихся в данном городе...
C++ Преобразование const char* в LPCTSTR VisualStudio2010 http://www.cyberforum.ru/cpp-beginners/thread766348.html
вот код для студии: #include <Windows.h> #include <mmsystem.h> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR...
C++ как оформить это на с++? (протабулировать функцию) На интервале с шагом E протабулировать функцию y=x^n! нужно сделать это используя функции и без стандартных подробнее

Показать сообщение отдельно
UserAK
73 / 73 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
21.01.2013, 10:01
у меня получилось так:

ArrayOfInt.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#pragma once
#include <iostream>
 
class ArrayOfInt
{
private:
    int *values; // указатель на начало массива данных в памяти
    unsigned size; // размер массива не может быть отрицательным, поэтому лучше использовать unsigned
public:
    ArrayOfInt() : values(NULL), size(0) {} //конструктор по умолчанию - создаётся пустой массив
    ArrayOfInt(const unsigned &); /*конструктор с параметром (размер массива)
                                    если размер массива 0, то будет создан пустой массив
                                    надо следить за тем, что бы соблюдалось правило
                                    если размер size = 0 то указатель на данные values должен быть NULL*/
    ~ArrayOfInt(); //деструктор
    void Add(const ArrayOfInt &); //присоединяет данные из другого массива
    void ConsoleIn(); //ввод с консоли
    void ConsoleOut(); //вывод на консоль
};
ArrayOfInt.cpp
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
#include "ArrayOfInt.h"
 
ArrayOfInt::ArrayOfInt(const unsigned &_size)
    : values(NULL), size(0) // тут инициализация - массив пустой
{
    if( _size != 0 ){
        size = _size;
        values = new int[size];
    }
}
 
ArrayOfInt::~ArrayOfInt(void)
{
    //если указатель на данные values равен NULL,
    //значит данных нет и ничего удалять не надо.
    //а если есть данные, надо их удалить
    if ( values != NULL ) delete[] values;
}
 
void ArrayOfInt::Add(const ArrayOfInt &other)
{
    // если присоединяется пустой массив, то делать ничего не нужно да и нельзя
    if( other.size > 0 ){
        int *buffer = new int[size + other.size];
        memcpy(buffer, values, sizeof(int)*size);
        memcpy(buffer+size, other.values, sizeof(int)*other.size);
        delete[] values;
        values = buffer;
        size += other.size;
    }
}
 
void ArrayOfInt::ConsoleIn()
{
    if( size > 0 ){
        std::cout<<"Input Array "<<size<<" of int : ";
        for(unsigned i=0; i<size; i++)
            std::cin>>values[i];
    }
}
 
void ArrayOfInt::ConsoleOut()
{
    if( size > 0 ){
        std::cout<<"Array "<<size<<" of int : ";
        for(unsigned i=0; i<size; i++)
            std::cout<<values[i]<<" ";
        std::cout<<std::endl;
    }
}
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "ArrayOfInt.h"
 
int main()
{
    ArrayOfInt arr1(0), arr2(5), arr3(3);
    arr1.ConsoleIn(); // ничего не произойдёт, массив пустой
    arr2.ConsoleIn(); // просит ввести 5 значений
    arr3.ConsoleIn(); // просит ввести 3 значения
 
    arr1.Add(arr2);
    arr1.ConsoleOut();
 
    arr1.Add(arr3);
    arr1.ConsoleOut();
 
    arr1.Add(arr1);
    arr1.ConsoleOut();
 
    system("pause");
    return 0;
}
Добавлено через 12 минут
я так понимаю это у вас обёртка для динамического массива целых, что бы автоматически вызывались new[] и delete[]
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru