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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2015, 16:38   #1
greenleonardo
 
Регистрация: 20.09.2015
Сообщений: 5
По умолчанию Реализация кода на Delphi

Здравствуйте! Не знаю как написать процедуры procedure GiveDrink(dr:TDrink); и procedure ServeAllCustomers; //обслужить всех клиентов. Не могли бы Вы подсказать как эти процедуры реализовать?
Код:
interface
type
TDrinkType = (dtLong, dtShot) //тип напитка - лонг или шот
 
TDrink = class // напиток
private
FName:string;
FGrades:integer; // проценты содержания алкоголя
FDrinkType:TDrinkType; // тип напитка
public
property Grades:integer read FGrades; // проценты содержания алкоголя
property Name:string read FName; // название напитка
property DrinkType:string read FType; // тип напитка
function IsNonAlcoholic : boolean; // является ли безалкогольным
end;
 
TCustomer = class // посетитель
private
FName:string;
FAge:byte; // возраст посетителя
FDesiredDrink: TDrink; // напиток, который хочет посетитель
public
property Name:string read FName;
property Age:byte read FAge; // возраст
property DesiredDrink: TDrink read FDesiredDrink; // напиток, который хочет посетитель
procedure GiveDrink(dr:TDrink); // предоставить напиток
end;
 
TBarmen = class // бармен
private
FCustomers: TList; // все посетители бара
FDrinks: TList; // все напитки, которые есть в наличии
public
procedure ServeAllCustomers; //обслужить всех клиентов
function AnounceToughestDrink: string // возвращает название самого крепкого напитка
end;

Последний раз редактировалось Stilet; 24.09.2015 в 17:28.
greenleonardo вне форума Ответить с цитированием
Старый 24.09.2015, 16:46   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

начнем с общего
Цитата:
procedure ServeAllCustomers; //обслужить всех клиентов
и что БАРМЕН по вашему мнению должен сделать чтобы "обслужить всех клиентов"
и кто это такие "все клиенты"
Можно не писать код, а рассказать своими словами опираясь на данные имеющиеся в классе. TBarmen = class // бармен
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 24.09.2015, 17:17   #3
greenleonardo
 
Регистрация: 20.09.2015
Сообщений: 5
По умолчанию

он должен проверить, если клиенту нет 18 лет и он просит безалкогольный напиток, то выдать ему безалкогольный и, соответственно, наоборот
greenleonardo вне форума Ответить с цитированием
Старый 24.09.2015, 17:30   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

GiveDrink это процедура заказа напитка у бармена, или процедура предложения барменом подходящего напитка?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.09.2015, 17:41   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

Цитата:
он должен проверить, если клиенту нет 18 лет и он просит безалкогольный напиток, то выдать ему безалкогольный и, соответственно, наоборот
У кого он должен проверить? {Телепапия Вкл.}У клиента.{Телепатия ВЫКЛ.}
У какого такого клиента ?
ведь нам нужно "обслужить всех клиентов".
Где он (TBarmen) может посмотреть всех своих клиентов ?
Как он их(клиентов) может перебрать ?
подсказка. Ведь для чего вы вводи в класс какие внутренние объекты (данные). Ну так дайте ответы на вопросы в терминах(именах) этих объектов.

to Stilet
Цитата:
FDesiredDrink: TDrink; // напиток, который хочет посетитель
procedure GiveDrink(dr:TDrink); // предоставить напиток
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 24.09.2015 в 17:48.
evg_m вне форума Ответить с цитированием
Старый 24.09.2015, 17:46   #6
greenleonardo
 
Регистрация: 20.09.2015
Сообщений: 5
По умолчанию

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

посмотреть он может в списке FCustomers: TList, а перебрать их с помощью цикла

Последний раз редактировалось Stilet; 24.09.2015 в 18:39.
greenleonardo вне форума Ответить с цитированием
Старый 24.09.2015, 19:09   #7
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
он должен проверить, если клиенту нет 18 лет и он просит безалкогольный напиток, то выдать ему безалкогольный и, соответственно, наоборот
А если клиенту есть 18 лет и он просит безалкогольный коктейль? Не давать?
А как он будет проверять клиентов? То есть по каким признакам?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 24.09.2015 в 19:11.
Utkin вне форума Ответить с цитированием
Старый 24.09.2015, 19:25   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вообще задание мутно, но из того что понял могу предложить такое:
Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
      Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs;

type
      TForm1 = class(TForm)
      private
            { private declarations }
      public
            { public declarations }
      end;

      TDrinkType = (dtLong, dtShot); //тип напитка - лонг или шот

			{ TDrink }

      TDrink = class // напиток
      private
      FName:string;
      FGrades:integer; // проценты содержания алкоголя
      FDrinkType:TDrinkType; // тип напитка
			FType: string;
      public
      property Grades:integer read FGrades; // проценты содержания алкоголя
      property Name:string read FName; // название напитка
      property DrinkType:string read FType; // тип напитка
      function IsNonAlcoholic : boolean; // является ли безалкогольным
      end;

			{ TCustomer }
      TBarmen = class;
      TCustomer = class // посетитель
      private
      FName:string;
      FAge:byte; // возраст посетителя
      FDesiredDrink: TDrink; // напиток, который хочет посетитель
      public
      property Name:string read FName;
      property Age:byte read FAge; // возраст
      property DesiredDrink: TDrink read FDesiredDrink; // напиток, который хочет посетитель
      Function GiveDrink(Barmen:TBarmen):TDrink; // предоставить напиток
      end;

			{ TBarmen }

      TBarmen = class // бармен
      private
      FCustomers: TList; // все посетители бара
      FDrinks: TList; // все напитки, которые есть в наличии
      public
      procedure ServeAllCustomers; //обслужить всех клиентов
      function AnounceToughestDrink: string; // возвращает название самого крепкого напитка
      end;

var
      Form1: TForm1;

implementation

{$R *.lfm}

{ TBarmen }

procedure TBarmen.ServeAllCustomers;
var i,j:integer; dr:TDrink; s:string;
begin
 with FCustomers do for i:=0 to Count-1 do begin
   dr:=TCustomer(Items[i]).GiveDrink(self);
   if (dr=nil) then ShowMessage('Иди отседова, олкаш одеколонистый!') else
     if (dr.FDrinkType=dtLong) and (TCustomer(Items[i]).Age in [18..90]) then ShowMessage('Окей, бухай') else
       begin
         s:='Я тее налить могу только ';
         with FDrinks do  for j:=0 to FDrinks.Count-1 do
          if TDrink(Items[j]).FDrinkType=dtShot then s:=s+' '+TDrink(Items[j]).Name;
         ShowMessage(s);
			 end;
 end;
end;

function TBarmen.AnounceToughestDrink: string;
begin

end;

{ TCustomer }

function TCustomer.GiveDrink(Barmen: TBarmen): TDrink;
Var i:Integer;   DrinkName:String;
begin
 DrinkName:=InputBox('Че пить будем?');
 with Barmen.FDrinks do  for i:=0 to Count-1 do
  if TDrink(Items[i]).Name=DrinkName then begin
    Result:=TDrink(Items[i]); exit;
	end;
end;

{ TDrink }

function TDrink.IsNonAlcoholic: boolean;
begin

end;

end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.09.2015, 20:24   #9
greenleonardo
 
Регистрация: 20.09.2015
Сообщений: 5
По умолчанию

Спасибо большое)
greenleonardo вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написание кода на с# Феттель Помощь студентам 0 22.12.2012 12:58
Написание кода по примеру картинки Xman Помощь студентам 4 11.07.2012 14:00
Написание кода в Delphi на создание матриц Chertenok666 Помощь студентам 9 30.11.2009 18:23
написание кода и музыкальное сопровождение veter_s_morya Свободное общение 0 27.09.2008 20:46