Advertisement
Ivan_Moscow

Course_Work

Jun 1st, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.13 KB | None | 0 0
  1. //Предметная область - Предприятие быстрого питания.
  2.  
  3. #include "stdafx.h"
  4. #include <iostream>
  5.  
  6. //Опишем класс списка заказов. Заказ, который
  7. //заказали первым, первым готовят. Принцип
  8. //"первым пришел - первым вышел"
  9. class orderStack {
  10. private:
  11.     char **name;        //Массив с именами заказов
  12.     float *price;       //Массив со стоимостями заказов
  13.     int size;           //Текущий размер стека
  14. public:
  15.     //Конструктор
  16.     orderStack(int stack_size=0) {
  17.         size = stack_size;
  18.         name = new char*[stack_size];
  19.         price = new float[stack_size];
  20.         return;
  21.     }
  22.     //Деструктор
  23.     ~orderStack() {
  24.         for (int i=0; i<size; i++) {
  25.             delete[] name[i];
  26.         }
  27.         delete[] name;
  28.         delete[] price;
  29.         return;
  30.     }
  31.     //Изменить заказ
  32.     void changeOrder(int index, char newname[], int n_len, float newprice) {
  33.         //Копируем посимвольно название заказа
  34.         delete name[index];
  35.         name[index] = new char[n_len];
  36.         for (int i=0; i<n_len; i++) {
  37.             name[index][i]=newname[i];
  38.         }
  39.         //Меняем стоимость
  40.         price[index]=newprice;
  41.         return;
  42.     }
  43.     //Клиент делает заказ - добавляем его в стек (в конец)
  44.     void addOrder(char *o_name, float o_price) {
  45.         //Делаем массивы на 1 длиннее
  46.         char **tmp_name = new char*[size+1];
  47.         float *tmp_price = new float[size+1];
  48.         //Копируем из старого массива в новый
  49.         for (int i=0; i<size; i++) {
  50.             tmp_name[i]=name[i];
  51.             tmp_price[i]=price[i];
  52.         }
  53.         //Записываем последний заказ
  54.         tmp_name[size] = o_name;
  55.         tmp_price[size] = o_price;
  56.         //Удаляем старые указатели, перезаписываем новыми
  57.         delete[] name;
  58.         delete[] price;
  59.         name = tmp_name;
  60.         price = tmp_price;
  61.         //Выводим сообщение
  62.         std::cout<<"Order recieved.\n";
  63.         std::cout<<"Item: "<<o_name<<"\n";
  64.         std::cout<<"Price: "<<o_price<<"\n";
  65.         size++;
  66.         return;
  67.     }
  68.     //Заказ готов - выдаем его клиенту
  69.     void getOrder() {
  70.         //"Вытаскиваем" первый с начала элемент
  71.         char *get_name = name[0];       //Имя выдаваемого заказа
  72.         float get_price = price[0];     //Цена выдаваемого заказа
  73.         //Копируем элементы в новые массивы, как в методе addOrder
  74.         char **tmp_name = new char*[size-1];
  75.         float *tmp_price = new float[size-1];
  76.         for (int i=0; i<size-1; i++) {
  77.             tmp_name[i]=name[i+1];
  78.             tmp_price[i]=price[i+1];
  79.         }
  80.         delete[] name;
  81.         delete[] price;
  82.         name = tmp_name;
  83.         price = tmp_price;
  84.         //Выведем сообщение
  85.         std::cout<<"Order is ready.\n";
  86.         std::cout<<"Item: ";
  87.         int i=0;
  88.         while (get_name[i]!='\0') {
  89.             std::cout<<get_name[i];
  90.             i++;
  91.         }
  92.         std::cout<<"\nPrice: "<<get_price<<"\n";
  93.         size--;
  94.         return;
  95.     }
  96. };
  97.  
  98. int _tmain(int argc, _TCHAR* argv[])
  99. {
  100.    
  101.     system("pause");
  102.     return 0;
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement