Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 14.09.2019, 18:11   #1
katerinaga
Новичок
 
Регистрация: 14.09.2019
Сообщений: 2
Репутация: 10
По умолчанию Структура данных «Динамический массив»

Необходимо реализовать следующие функции:
1. Функция создания и инициализации полей массива (length,capacity,array)
2. Добавления элемента в массив
3. Удаление элемента из массива
4. Вставка элемента в начало
5. Вставка элемента в конец
6. Вставка после определенного элемента
7. Сортировка массива
8. Линейный поиск элемента в массиве
9. Бинарный поиск элемента в массиве

При работе с массивом предполагается, что изначально выделяется буффер размера по умолчанию (4 или 8). Затем работа с элементами массива идет через реализованные функции.

Программу необходимо оформить в виде меню. После запуска выводится список того, что можно сделать с массивом. Любой пункт можно выбирать множество раз
katerinaga вне форума   Ответить с цитированием
Старый 14.09.2019, 18:14   #2
Alex11223
Модератор
Заслуженный модератор
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,266
Репутация: 3739

icq: 512-765
skype: alexp.frl
По умолчанию

Тут не решатель задач.
Если кто-то просто решит за вас, это вряд ли поможет вам разобраться.

покажите свои наработки, конкретные вопросы и т.п.
http://www.programmersforum.ru/announcement.php?f=31

Или в раздел Фриланс если вы не хотите ничего делать, а ищете кого-то, кто выполнит ваши задачи за вознаграждение.
Alex11223 вне форума   Ответить с цитированием
Старый 14.09.2019, 23:38   #3
ViktorR
Профессионал
 
Регистрация: 23.10.2010
Сообщений: 1,354
Репутация: 644
По умолчанию

katerinaga
На мой взгляд у вас несколько способов решить задачу.
1. Фриланс, заплатить и спать спокойно.
2. Найти товарищей поближе. Но это сложный путь, так как они не меньшие лентяи и даже за банку пива не будут напрягать мозг.
3. Найти подходящую книгу в электронном виде. Например, Т.А. Павловская, ЯВУ Паскаль. У неё же есть книга ЯВУ С++.
В книге найти раздел динамические массивы. Там всё разжёвано хорошо и есть много примеров.
Для вашей задачи подойдёт такая структура, как список.
Плюсов третьего варианта много. Минус - надо самому что то делать.
Если в процессе "приготовления" что то будет получаться "кислым" или "солёным", то пишите здесь: что пытались сделать и что не получается.
__________________
Как-то так, ...
ViktorR вне форума   Ответить с цитированием
Старый 15.09.2019, 15:37   #4
katerinaga
Новичок
 
Регистрация: 14.09.2019
Сообщений: 2
Репутация: 10
По умолчанию

Код:
#include <iostream>
#include <cstdlib>
#include <istream>
#include <ctime>
using namespace std;
struct Str
{
	int *arr;
	size_t lenght;
	size_t capacity;
};

void stockMass(Str *array)
{
	srand(time(NULL));
	array->capacity = array->lenght = sizeof(array);
	array->arr = new int[array->capacity];
	for (int i = 0; i < array->capacity; i++)
	{
		array->arr[i]=1+rand()%20;
	}
}
void showMass(Str *array)
{
	for (int i = 0; i < array->capacity; i++)
	{
		cout << array->arr[i] << " ";
	}
}
void initMass(Str *array)
{
	cout << "Введите кол-во памяти для массива";
	cin >> array->lenght;
	cout << "Введите длину массива";
	cin >> array->capacity;
	for (int i = 0; i <= array->capacity; i++)
	{
		cout << "Введите " << array->capacity + 1 << " элемент массива";
		cin >> array->arr[i];
	}
}
	
void resize(Str *array)
{
	size_t newSize = array->lenght*2;
	int *newArr = (int*)realloc(array->arr, newSize);
	if (newArr == NULL)
	{
		cout << "Не получилос, не фарртануло";
	}
	array->arr = newArr;
	array->lenght = newSize;
}

void addLast(Str *array)
{
	showMass(array);
	if (array->capacity >= array->lenght)
	{
		resize(array);
	}
		int val;
		cout << "Введите значение";
		cin >> val;
		array->arr[array->capacity++] = val;
}
void deleteVal(Str *array)
{
	for (int i = 0; i < array->capacity; i++)
	{
		cout << array->arr[i] << " ";
	}
	cout << "\n Введите номер элемента, который нужно удалить: ";
	int val;
	cin >> val;
	while (val>array->capacity)
	{
		cout << "Значение больше размера массива(";
		cin >> val;
	}
	int *newArr= (int*)realloc(array->arr, array->capacity-1);
	int j = 0;
	for (int i = 0; i < array->capacity; i++)
	{
		if (i == val-1)
			i++;
		newArr[j] = array->arr[i];
		array->arr[j] = newArr[j];
		j++;
	}
	array->capacity = array->capacity - 1;
	cout << "Полученный массив: ";
	showMass(array);
}
void main()
{
	setlocale(LC_ALL, "russian");
	Str *array = new Str;
	stockMass(array);
	addLast(array);
	deleteVal(array);
	delete[] array;
	system("pause");
}

выдает постоянные предупреждения, помогите пожалуйста, прога работает не оч
______________________
Используйте тег [CODE] (кнопка [CODE] в форме сообщения) при вставке кода на форум. Подробнее в FAQ

Последний раз редактировалось Alex11223; 15.09.2019 в 20:47.
katerinaga вне форума   Ответить с цитированием
Старый 15.09.2019, 20:48   #5
Alex11223
Модератор
Заслуженный модератор
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,266
Репутация: 3739

icq: 512-765
skype: alexp.frl
По умолчанию

Цитата:
Сообщение от katerinaga Посмотреть сообщение
выдает постоянные предупреждения
секретные?
Alex11223 вне форума   Ответить с цитированием
Старый 16.09.2019, 12:20   #6
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 14,886
Репутация: 2668
По умолчанию

Там их пачка должна быть, например, сравнение знаковых и беззнаковых. Да итак там куча вопросов: выходы за границу массивов, сайзоф от указателя, рост в 2 раза без учета реальной необходимости, смешивание нью/реаллок...
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Внесение данных в двумерный динамический массив Vladislavv Помощь студентам 5 08.10.2014 00:19
Структура и динамический массив averardo Общие вопросы C/C++ 8 17.06.2013 15:10
Структура в С++ (динамический массив) Елена_05 Общие вопросы C/C++ 1 23.05.2011 12:20
Динамический массив - или всё таки не динамический? vedro-compota Общие вопросы C/C++ 30 11.12.2010 00:22


07:08.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.