Реализация динамического массива.
Добавлено: 25 фев 2013, 20:38
Здравствуйте. Нужно реализовать динамический массив. Вообщем изначально задание было такое:
Требуется реализовать динамический массив.
Для этого вам нужно создать структуру данных, которая будет хранить размер массива и указатель на его начало, и 4 функции для работы с этим массивом:
1. инициализация массива (выделение памяти указанного размера, инициализация полей структуры),
2. функция, возвращающая значение элемента массива с указанным индексом,
3. функция, записывающая указанное значение в массив по указанному индексу,
4. освобождение памяти.
Это вроде бы сделал. Вот как всё выглядит:
всё работает всё прекрасно. Но теперь надо модифицировать программу. Надо добавить функцию которая будит сразу выделять память для массива. То есть, как мне объяснили, если пользователь захочет не с одним массивом работать, а с несколькими то программа должна с этим работать. Как это реализовать я понятия не имею. Типа должна быть функция:
там надо дописать две строчки и всё будит хорошо. Но вот не понимаю как какие то две строчки спасут положение. 1 структура, один массив...как две строчки помогут работать ещё с одним массивом?
Требуется реализовать динамический массив.
Для этого вам нужно создать структуру данных, которая будет хранить размер массива и указатель на его начало, и 4 функции для работы с этим массивом:
1. инициализация массива (выделение памяти указанного размера, инициализация полей структуры),
2. функция, возвращающая значение элемента массива с указанным индексом,
3. функция, записывающая указанное значение в массив по указанному индексу,
4. освобождение памяти.
Это вроде бы сделал. Вот как всё выглядит:
Код: Выделить всё
#include <iostream>
#include <stdlib.h>
using namespace std;
struct aray //описание структуры
{
int mas;
int *a;
};
aray k;
char ch; //ввожу символьную переменную для того что бы пользователь смог отвечать на вопросы программы
void initial();
void vivodMass ();
void memory();
int main()
{
cout << "1 - input array" << endl;
cout << "2 - output array" << endl;
cout << "3 - memory cleaning" << endl;
initial();
vivodMass ();
memory();
return 0;
}
void initial() //размер массива и ввод массива
{
cout << "size of the array" << endl;
cin >> k.mas;
k.a = new int [k.mas];
for (int i=0; i<k.mas; i++)
{
cout << "Enter " << i << " the array element" << endl;
cin >> k.a[i];
}
cout << "Completed entry array" << endl;
cout << endl;
}
void vivodMass () // вывод указанных елементов массива
{ int n;
bool z;
while (!z)
{
cout << "What element of a display? Enter the number of the array." << endl;
cin >> n;
cout << "Array" << "[" << n << "]" << " = " << k.a[n] << endl; //выводим запрашивающий элемент массива.
cout << "Do you want to bring a different element? y and n" << endl;
cin >> ch;
if (ch=='y') z=0;
if (ch=='n') z=1;
if (((ch!='y')) && ((ch!='n'))) //спрашиваем пользователя хочет ли он выйти или вывести другой элемент.
{
cout << "error" << endl;
exit(0);
}
}
}
void memory() //очистка памяти
{
cout << "Clear memory? y and n" << endl;
cin >> ch;
if (ch=='y')
{
delete [] k.a;
cout << "memory is cleared";
}
if (ch=='n') exit(0);
if (((ch!='y')) && ((ch!='n')))
{
cout << "error" << endl;
exit(0);
}
}
Код: Выделить всё
void init(int N, aray M)