Консультация № 198432
01.05.2020, 08:36
0.00 руб.
0 4 0
Здравствуйте! У меня возникли сложности с таким заданием:

Попал в не очень хорошую ситуацию.
Начнем с того, что я студент 1 курса технического вуза.
Далее, я слепой.
Если возникают вопросы, как я пишу, программирую и т.д, читайте тут:
https://habr.com/ru/post/260463/
https://habr.com/ru/post/336600/
Лучше всего я знаю Python и C#, и тут я попал. На 1 семестре C. Причем, никаких базовых основ. На первой лекции мы рассматривали типы данных, условия, циклы. Меня это пришибло.
Алгоритмы и структуры данных. Тут все совсем печально. Преподаватель оказался неадекватным, все рисовал на доске.
Я просил объяснить, посоветовать что-то почитать, 0 реакции.
Сейчас был карантин, и тут сегодня мне присылают задания. Мол, надо сделать до конца семестра. А конец семестра, чтобы вы понимали, 22 мая.
5 заданий по АСД. Открываю первое, и просто...
Вот задание.
Выполняется разработка программного обеспечения для системы учета складской продукции. Данные для хранимой на складе, задаются:
- названием (не более 5 символов)
- стоимость;
- количество.
Заявки, должны временно храниться в созданной для этого линейной структуре данных до тех пор, пока не поступит требование на их выдачу с целью обработки. Тип используемой линейной структуры данных уточняется в конкретном задании.

Нужно разработать программу, которая имитирует работу описанного фрагмента системы учета товара. Программа должна обеспечить в любой момент времени по желанию пользователя:
1. Введение заявки с данными по новому товару с включением этих данных в соответствующую структуру данных;
2. выборку из структуры данных заявки с отображением на экране данных по товару.
3. Просмотр списка заявок.
4. Завершение работы программы.

При запуске программы на выполнение обеспечить - при наличии соответствующего двоичного файла - введение с файла сохранившихся в нем данные.
При завершении программы:
 сохранить данные в двоичном файле;
 отразить сформированные данные в текстовом файле протокола.

задача №1
Как структуры данных, используемой для хранения заявок используется стек, вариант организации которого для различных бригад статический массив.

задача №2
Как структуры данных, используемой для хранения заявок используется очередь, вариант организации которого для различных бригад кольцевая в динамическом массиве.

задача №3
Как структуры данных, используемой для хранения заявок используется дек, вариант организации которого для различных бригад динамический массив.

Статический массив, массив имеет 100 элементов.
Динамический массив, количество элементов массива задается пользователем после запуска программы.

Из этого всего я понял только то, что в программе должна быть структура, статический и динамические массивы. И все!

Приложение:
struct Node
{
  char* name = new char[6];
  float sumary;
  int amount;
  Node(char* name, float sumary, int amount) :name(name), sumary(sumary), amount(amount)
{
  }
  Node() {}
};
 
stack<Node> example;
  stack<Node> example1;
  example.push(Node("abc", 12.5f, 100));
  example.push(Node("def", 25.0f, 200));
  example.push(Node("ghi", 37.5f, 300));
  example.push(Node("jkl", 50.0f, 400));
  example.push(Node("mno", 62.5, 500));
 
  while (!example.empty()) {
    Node temp = example.top();
    example.pop();
    cout << temp.name << " " << temp.sumary << " " << temp.amount << endl;
    example1.push(temp);
  }
  while (!example1.empty()) {
    Node temp = example1.top();
    example1.pop();
    example.push(temp);
  }
Теперь нужно понять, как из этого сделать динамический массив.
Мне сказали, что для этого нужно делать свой Stack, отдельный, сам тип.

Обсуждение

давно
Посетитель
403423
3
01.05.2020, 08:40
общий
Забыл вложить пример менюшки, которую делал для простых стеков в самом начале курса.
Прикрепленные файлы:
45157feb32438b8f16f38e8f6f01cd4d.zip
давно
Посетитель
403423
3
01.05.2020, 20:27
общий
Одно задание сделал.
Нужно сделать 2, с очередью и кольцевым дин массивом, и третью, с динамическим.
Я вообще не представляю, как очередь и дек реализуется в коде...
Прикрепленные файлы:
03f36c783f7a3115d38c5f0a2bea9a57.txt
давно
Старший Модератор
31795
6196
07.05.2020, 19:21
общий
Адресаты:
Вы сделали Стек, По следующей ссылке информация, как сделать Очередь.
Это все односвязанные списки.

Сразу прошу прощения, за мой PASCAL(в С, у меня меньше практики):
Описание:
[code lang=pascal] pStack=^tStack;{определяем указатель на структуру}
tStack=record{тип структура}
value:integer;{тип или типы, которые Вам нужны}
link:pStack;{указатель, на предыдущий элемент}
end;
pQueue=^tQueue;{определяем указатель на структуру}
tQueue=record{тип структура}
value:integer;{тип или типы, которые Вам нужны}
link:pQueue;{указатель на чледующий элемент}
end;[/code]
В обоих случаях описание аналогичное, можно сказать одинаковое.
Что, это будет очередь или стек, зависит, от того как Вы управляете связями в списке.

Создание первого элемента.
Стек:
[code lang=pascal] new(HeadStack);{выделяем память}
HeadStack^.link:=nil;{устанавливаем связь}[/code]
Очередь:
[code lang=pascal] new(HeadQueue);{выделяем память}
HeadQueue^.link:=nil;{устанавливаем связь}
TillQueue:=HeadQueue;{определяем хвост}[/code]

Добавление очередного элемента:
Стек:
[code lang=pascal] new(tempStack);{выделяем память}
tempStack^.link:=HeadStack;{устанавливаем связь на предыдущий эллемент}
HeadStack:=tempStack;{премещаем голову стека}[/code]
Очередь:
[code lang=pascal] new(tempQueue);{выделяем память}
tempQueue^.link:=nil;{ставим маркер, что дальше нет ничего}
TillQueue^.link:=tempQueue;{в хвост списка подключаем следующий элемент}
TillQueue:=tempQueue;{перемещаем хвост списка}[/code]

Извлечение из списка:
Стек:
[code lang=pascal] tempStack:=HeadStack;{Запоминаем указатель головы}
HeadStack:=HeadStack^.link;{перемещаем голову списка}[/code]
Очередь:
[code lang=pascal] tempQueue:=HeadQueue;{Запоминаем казатель головы}
HeadQueue:=HeadQueue^.link;{премещаем голову списка}[/code]

Дека, это двухсвязаный список. Практически он объединяет в себе и Стек и Очередь.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
13.05.2020, 13:23
общий
Адресаты:

Получилось, что либо?
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа