Помогите пожалуста решить задачу по теме:
"Формирование динамических массивов с помощью операция new и delete или библиотечных функций malloc и free"
Задача:
Сформировать одномерный массив. Удалить элемент с заданным ключом, добавить элемент с заданым ключом.
Другие языки программирования и технологии
Динамический массив. help
// Для new и delete, только это C++
#include <iostream>
#include <ctime>
using namespace std;
bool check(int, int);
void print(int *, int &);
int main()
{
locale::global(locale(""));
srand(unsigned(time(NULL)));
int size = rand() % 5 + 3;
int * a = NULL, * t = NULL;
a = new int [size];
for (int n = 0; n < size; n++) a[n] = rand() % 90 + 10;
print(a, size);
int del;
cout << endl << " Введите индекс удаляемого элемента: ";
cin >> del;
bool flag;
flag = check(del, size);
if (flag)
{
t = new int [size];
for (int n = 0; n < size; n++) t[n] = a[n];
int newsize = size - 1;
delete[] a;
a = new int [newsize];
for (int n = 0, m = 0; n < size; n++, m++)
{
if (n == del)
{
--m;
continue;
}
a[m] = t[n];
}
delete[] t;
size = newsize;
print(a, size);
}
int ins;
cout << endl << " Введите индекс вставляемого элемента: ";
cin >> ins;
flag = check(ins, size + 1);
if (flag)
{
int num;
cout << endl << " Введите значение элемента: ";
cin >> num;
t = new int [size];
for (int n = 0; n < size; n++) t[n] = a[n];
int newsize = size + 1;
bool yes = true;
delete[] a;
a = new int [newsize];
for (int n = 0, m = 0; n < newsize; n++, m++)
{
if (n == ins && yes)
{
a[n] = num;
--n;
yes = false;
continue;
}
a[m] = t[n];
}
delete[] t;
size = newsize;
print(a, size);
}
delete[] a;
cin.get(); cin.get();
return 0;
}
bool check(int index, int size)
{
if (index < 0 || index >= size)
{
cout << endl;
if (index >= 0) cout << "\a Элемента с заданным индеком в массиве не существует! ";
else cout << "\a Индекс не может быть отрицательным! ";
cout << endl;
return false;
}
return true;
}
void print(int * p, int &sz)
{
cout << endl;
for (int n = 0; n < sz; n++) cout << ' ' << p[n];
cout << endl;
}
#include <iostream>
#include <ctime>
using namespace std;
bool check(int, int);
void print(int *, int &);
int main()
{
locale::global(locale(""));
srand(unsigned(time(NULL)));
int size = rand() % 5 + 3;
int * a = NULL, * t = NULL;
a = new int [size];
for (int n = 0; n < size; n++) a[n] = rand() % 90 + 10;
print(a, size);
int del;
cout << endl << " Введите индекс удаляемого элемента: ";
cin >> del;
bool flag;
flag = check(del, size);
if (flag)
{
t = new int [size];
for (int n = 0; n < size; n++) t[n] = a[n];
int newsize = size - 1;
delete[] a;
a = new int [newsize];
for (int n = 0, m = 0; n < size; n++, m++)
{
if (n == del)
{
--m;
continue;
}
a[m] = t[n];
}
delete[] t;
size = newsize;
print(a, size);
}
int ins;
cout << endl << " Введите индекс вставляемого элемента: ";
cin >> ins;
flag = check(ins, size + 1);
if (flag)
{
int num;
cout << endl << " Введите значение элемента: ";
cin >> num;
t = new int [size];
for (int n = 0; n < size; n++) t[n] = a[n];
int newsize = size + 1;
bool yes = true;
delete[] a;
a = new int [newsize];
for (int n = 0, m = 0; n < newsize; n++, m++)
{
if (n == ins && yes)
{
a[n] = num;
--n;
yes = false;
continue;
}
a[m] = t[n];
}
delete[] t;
size = newsize;
print(a, size);
}
delete[] a;
cin.get(); cin.get();
return 0;
}
bool check(int index, int size)
{
if (index < 0 || index >= size)
{
cout << endl;
if (index >= 0) cout << "\a Элемента с заданным индеком в массиве не существует! ";
else cout << "\a Индекс не может быть отрицательным! ";
cout << endl;
return false;
}
return true;
}
void print(int * p, int &sz)
{
cout << endl;
for (int n = 0; n < sz; n++) cout << ' ' << p[n];
cout << endl;
}
В С операций new и delete нет. Они есть только в C++. Ты все же узнай, какой язык изучаешь. А то ведь программы будут выглядеть по-разному.
1. определить массив и добавлять элементы выглядит примерно так:
typedef struct MyElement
{
char sKey[64];
void *pObject;
} MyElement, *MyElementPtr;
// Глобальные переменные - сам массив и его размер в каждый момент времени
MyElementPtr pArray;
int nLast = 0;
void Add(char *key, void *item);
void Add(char *key, MyElementPtr *pArray);
void Add(char *key, void *item)
{
if ( ContainsKey (key, pArray) == true)
{
return;
}
nLast ++;
if (nLast == 1)
{
pKeyArray = (MyElementPtr) calloc (1, sizeof(MyElement));
}
else
{
pKeyArray = (MyElementPtr) recalloc (pArray, nLast, sizeof(MyElement));
}
pArray [nLast-1].pObject = item;
strncpy (pArray [nLast-1].sKey, 63, (char*)key, 62);
pArray [nLast-1].sKey[63] = 0;
return;
}
Если с остальными функциями не разберешся, пиши на мыло в Мир
(там для реально работающего кода необходимо расставить кучу проверок на граничные условия)
typedef struct MyElement
{
char sKey[64];
void *pObject;
} MyElement, *MyElementPtr;
// Глобальные переменные - сам массив и его размер в каждый момент времени
MyElementPtr pArray;
int nLast = 0;
void Add(char *key, void *item);
void Add(char *key, MyElementPtr *pArray);
void Add(char *key, void *item)
{
if ( ContainsKey (key, pArray) == true)
{
return;
}
nLast ++;
if (nLast == 1)
{
pKeyArray = (MyElementPtr) calloc (1, sizeof(MyElement));
}
else
{
pKeyArray = (MyElementPtr) recalloc (pArray, nLast, sizeof(MyElement));
}
pArray [nLast-1].pObject = item;
strncpy (pArray [nLast-1].sKey, 63, (char*)key, 62);
pArray [nLast-1].sKey[63] = 0;
return;
}
Если с остальными функциями не разберешся, пиши на мыло в Мир
(там для реально работающего кода необходимо расставить кучу проверок на граничные условия)
язык?
Похожие вопросы
- вопрос о динамических массивах в fortran
- динамический массив в Visual C++
- Написать программу в VBA арифметической прогрессии в динамическом массиве.
- С++: Как изменять размеры многомерных динамических массивов по ходу выполнения программы?
- Вычислить сумму нечетных элементов в программа С++ .Через статический и динамический массив! Вот я сам написал проверьте
- С++ Динамический массив
- Программирование С++ Что такое Динамические массивы?
- пожалуйста, напишите мне программу этого вопроса в C ++.пожалуйста помогите. Создать динамический массив из N чисел.
- Сортировка двумерного динамического массива
- Помогите с программой на Си. (создание многомерных динамических массивов)