Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Предметная область - Предприятие быстрого питания.
- #include "stdafx.h"
- #include <iostream>
- //Опишем класс списка заказов. Заказ, который
- //заказали первым, первым готовят. Принцип
- //"первым пришел - первым вышел"
- class orderStack {
- private:
- char **name; //Массив с именами заказов
- float *price; //Массив со стоимостями заказов
- int size; //Текущий размер стека
- public:
- //Конструктор
- orderStack(int stack_size=0) {
- size = stack_size;
- name = new char*[stack_size];
- price = new float[stack_size];
- return;
- }
- //Деструктор
- ~orderStack() {
- for (int i=0; i<size; i++) {
- delete[] name[i];
- }
- delete[] name;
- delete[] price;
- return;
- }
- //Изменить заказ
- void changeOrder(int index, char newname[], int n_len, float newprice) {
- //Копируем посимвольно название заказа
- delete name[index];
- name[index] = new char[n_len];
- for (int i=0; i<n_len; i++) {
- name[index][i]=newname[i];
- }
- //Меняем стоимость
- price[index]=newprice;
- return;
- }
- //Клиент делает заказ - добавляем его в стек (в конец)
- void addOrder(char *o_name, float o_price) {
- //Делаем массивы на 1 длиннее
- char **tmp_name = new char*[size+1];
- float *tmp_price = new float[size+1];
- //Копируем из старого массива в новый
- for (int i=0; i<size; i++) {
- tmp_name[i]=name[i];
- tmp_price[i]=price[i];
- }
- //Записываем последний заказ
- tmp_name[size] = o_name;
- tmp_price[size] = o_price;
- //Удаляем старые указатели, перезаписываем новыми
- delete[] name;
- delete[] price;
- name = tmp_name;
- price = tmp_price;
- //Выводим сообщение
- std::cout<<"Order recieved.\n";
- std::cout<<"Item: "<<o_name<<"\n";
- std::cout<<"Price: "<<o_price<<"\n";
- size++;
- return;
- }
- //Заказ готов - выдаем его клиенту
- void getOrder() {
- //"Вытаскиваем" первый с начала элемент
- char *get_name = name[0]; //Имя выдаваемого заказа
- float get_price = price[0]; //Цена выдаваемого заказа
- //Копируем элементы в новые массивы, как в методе addOrder
- char **tmp_name = new char*[size-1];
- float *tmp_price = new float[size-1];
- for (int i=0; i<size-1; i++) {
- tmp_name[i]=name[i+1];
- tmp_price[i]=price[i+1];
- }
- delete[] name;
- delete[] price;
- name = tmp_name;
- price = tmp_price;
- //Выведем сообщение
- std::cout<<"Order is ready.\n";
- std::cout<<"Item: ";
- int i=0;
- while (get_name[i]!='\0') {
- std::cout<<get_name[i];
- i++;
- }
- std::cout<<"\nPrice: "<<get_price<<"\n";
- size--;
- return;
- }
- };
- int _tmain(int argc, _TCHAR* argv[])
- {
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement