Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2020, 20:57   #1
jonikster
Форумчанин
 
Регистрация: 28.10.2014
Сообщений: 216
По умолчанию Задача по АСД. Системы учета складской продукции

Здравствуйте.
Попал в не очень хорошую ситуацию.
Начнем с того, что я студент 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 элементов.
Динамический массив, количество элементов массива задается пользователем после запуска программы.

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

Ребята, крик о помощи! Подскажите, как это решать? Помогите, направьте.
Виноват не только препод, я тоже, я мог бы самостоятельно читать АСД, найти хоть что-то, но я никак не ожидал, что меня срочно попросят сделать задание. А мне хоть на тройку надо вытянуть.

Заранее благодарен!
jonikster вне форума Ответить с цитированием
Старый 30.04.2020, 23:20   #2
jonikster
Форумчанин
 
Регистрация: 28.10.2014
Сообщений: 216
По умолчанию

Код:
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...
jonikster вне форума Ответить с цитированием
Старый 01.05.2020, 20:38   #3
jonikster
Форумчанин
 
Регистрация: 28.10.2014
Сообщений: 216
По умолчанию

Одно задание сделал.
Нужно сделать 2, с очередью и кольцевым дин массивом, и третью, с динамическим.
Я вообще не представляю, как очередь и дек реализуется в коде...

Код:
#include<stdio.h>

struct Stack
{
int* stack;
int size = 0;
int Capasity = 0;
Stack() {}
Stack(int aCapasity)
{
stack = new int[aCapasity];
Capasity= aCapasity;
}
~Stack()
{
delete stack;
}
bool push(int var)
{
if (size < Capasity)
{
stack[size] = var;
size++;
return true;
}
else
{
printf("Error, Size == Capasity, use Stack(N) to resize stack");
return false;
}
}
int pop()
{
if (size > 0)
{
size--;
return stack[size];
}
else
{
printf("Error, No elements");
return -1;
}
}
int peek()
{
if (size > 0)
return stack[size - 1];
else
{
printf("Error, No elements");
return -1;
}
}
void showStack()
{
int size_temp = size;
for (; size > 0; size--)
{
printf("%d ", stack[size - 1]);
}
printf("\n");
size = size_temp;
}
};

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() {}
};

int main()
{
int command;
stack<Node> node;
for (;;)
{
printf("Input command:\n 1 - add,\n 2 - delete last,\n 3 - show all,\n 4 - exit\n");
scanf("%d", &command);
switch (command)
{
case 1:
char name[6];
float sumary;
int amount;
printf("Enter name: ");
scanf("%s", &name);
printf("Enter sumary: ");
scanf("%f", &sumary);
printf("Enter amount: ");
scanf("%d", &amount);
node.push(Node(name, sumary, amount));
break;
case 2:
node.pop();
printf("The last have been deleted");
break;
case 3:
while (!example.empty())
{
Node temp = example.top();
example.pop();
cout << temp.name << " " << temp.sumary << " " << temp.amount << endl;
}
break;
case 4:
return 0;
default:
printf("Wrong command...");
break;
}
}
}
jonikster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разработка информационной системы учета входящей и исходящей информации. нужен исходник katorgindenis2 Помощь студентам 0 11.03.2013 15:56
требуется разработчик онлайн-системы учета заявок на покупку авиа и ж/д билетов, Symfony + postgreSQL unicomm Фриланс 2 14.10.2011 11:29
Имеются n пунктов производства и m пунктов распреде-ления продукции. Стоимость перевозки единицы продукции с i-го пункта Юленька*** Microsoft Office Excel 1 11.07.2011 17:03