Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.05.07;
Скачать: [xml.tar.bz2];

Вниз

Трудная задача по Информатике   Найти похожие ветки 

 
Таня   (2006-04-07 13:44) [0]

Напишите пожалуйста алгоритм решения и реализуйте и его на Delphi.
На автоматизированном участке цеха стоят 5 станков, действия которых скоординированы следующим образом.
Если работают первый и третий станки, то четвертый не работает при условии, что подключен пятый станок. Если же первый станок подключен без третьего или выключен пятый станок, то четвертый обязательно подключен. Если пятый станок работает вместе со вторым при включенном первом станке, то включен третий станок. Если выключен второй или пятый станок, то одновременно выключен и четвертый.
1. Мы наблюдаем работу первого и четвертого станков. Что можно сказать о состоянии остальных станков, скрытых за перегородкой?
2. Можно ли в данной системе остановить для ремонта одновременно третий и четвертый станки, оставив хотя бы один из остальных станков включенным?
Заранее благодарю.


 
Игорь Шевченко ©   (2006-04-07 13:58) [1]


> Напишите пожалуйста алгоритм решения и реализуйте и его
> на Delphi.


Напишите пожалуйста сумму оплаты и реализуйте перевод денежного вознаграждения.


 
Jeer ©   (2006-04-07 14:02) [2]

P.S.

> реализуйте перевод денежного вознаграждения.

до написания алгоритма и программы.


 
Игорь Шевченко ©   (2006-04-07 14:04) [3]

Jeer ©   (07.04.06 14:02) [2]

Что-то в этой задаче мне сильно напоминает дизъюнктивную нормальную форму...Или я ошибаюсь за давностью лет ? :)


 
Думкин ©   (2006-04-07 14:19) [4]

Опять весна,
опять зачет
Кому смешно
а мне в военкомат....

Не в рифму, зато правда.


 
Sandman25 ©   (2006-04-07 14:30) [5]

Игорь Шевченко ©   (07.04.06 14:04) [3]

Вы читали задание до реализации денежного вознаграждения? :)


 
Jeer ©   (2006-04-07 14:33) [6]

Да Булева, Булева - она самая:)


 
Курдль ©   (2006-04-07 14:33) [7]


> Игорь Шевченко ©   (07.04.06 13:58) [1]
> Напишите пожалуйста сумму оплаты и реализуйте перевод денежного вознаграждения.


А чё сразу "денежного"? Вам лингвистическая конструкция "Таня" ничего не говорит?


 
Игорь Шевченко ©   (2006-04-07 14:34) [8]

Sandman25 ©   (07.04.06 14:30) [5]

Я, уважаемый Александр, читаю практически все ветки. По совместительству.


 
Ega23 ©   (2006-04-07 14:34) [9]


> А чё сразу "денежного"? Вам лингвистическая конструкция
> "Таня" ничего не говорит?


Можно и натурой. Хотя зависит от многих факторов...


 
Sandman25 ©   (2006-04-07 14:35) [10]

Думкин ©   (07.04.06 14:19) [4]

Не трави душу, я с военкоматом уже 2 недели мучаюсь :)


 
Sandman25 ©   (2006-04-07 14:38) [11]

Игорь Шевченко ©   (07.04.06 14:34) [8]

То есть обязаны прочитать до последней буквы, дабы убедиться в отсутствии мата и пр.? Сочувствую и извиняюсь за глупый вопрос.


 
balepa ©   (2006-04-07 14:50) [12]


> Игорь Шевченко ©   (07.04.06 13:58) [1]

+ 5 станков для отладки программы :)


 
Kolan ©   (2006-04-07 15:14) [13]

Ну я вроде сделал:
Вот модуль
unit KDeviceTaskDeviceManager;

interface
uses
 Contnrs;
type
 TCustomDevice = class
 strict private
   procedure SetIsSwiched(val : Boolean);
   function GetIsSwiched : Boolean;
   procedure SetNumber(val : Integer);
   function GetNumber : Integer;
   procedure SetIsOperating(val : Boolean);
   function GetIsOperating : Boolean;

 private var
   FIsOperating:Boolean;
   FNumber:integer;
   FIsSwiched:Boolean;

 public
   constructor Create;

   property IsOperating : Boolean read GetIsOperating write SetIsOperating;

   property Number : Integer read GetNumber write SetNumber;

   property IsSwiched : Boolean read GetIsSwiched write SetIsSwiched;
 end;

 TDeviceManager = class
 public
   constructor Create;
   destructor Destroy; override;
   procedure SetDeviceOperatingMode(IsOperating: Boolean; Number: Integer);
   procedure SetDeviceSwitchMode(IsSwitched: Boolean;  Number: Integer);
   procedure GetDeviceSatate(Number: Integer; var IsSwitched: Boolean; var IsOperationg: Boolean);

 var
   FDeviceList:TObjectList;

 protected
   function GetDevice(Number : Integer): TCustomDevice;
   procedure ProssesState;
 end;

implementation

constructor TCustomDevice.Create;
begin
inherited Create;
 FIsOperating := False;
 FNumber := 0;
 FIsSwiched := False;
end;

function TCustomDevice.GetIsOperating: Boolean;
begin
 Result := FIsOperating;
end;

procedure TCustomDevice.SetIsOperating(val : Boolean);
begin
 FIsOperating := Val;
end;

constructor TDeviceManager.Create;
var
 I: Integer;
 Temp: TCustomDevice;
begin
 inherited Create;
 FDeviceList := TObjectList.Create;
 for I := 1 to 5 do
 begin
   Temp := TCustomDevice.Create;
   Temp.Number := I;
   FDeviceList.Add(Temp);
 end;
end;

function TCustomDevice.GetNumber: Integer;
begin
 Result := FNumber;
end;

procedure TCustomDevice.SetNumber(val : Integer);
begin
 FNumber := Val;
end;

destructor TDeviceManager.Destroy;
begin
inherited Destroy;
 FDeviceList.Free;
end;

procedure TDeviceManager.SetDeviceOperatingMode(IsOperating: Boolean; Number: Integer);
begin
 GetDevice(Number).IsOperating := IsOperating;
 ProssesState;
end;

function TDeviceManager.GetDevice(Number : Integer): TCustomDevice;
var
 I: Integer;
begin
 Result := nil;
 for I := 0 to FDeviceList.Count - 1 do
 begin
   if (FDeviceList[I] as TCustomDevice).Number = Number then
   begin
     Result := FDeviceList[I] as TCustomDevice;
     Exit;
   end;
 end;
end;

function TCustomDevice.GetIsSwiched: Boolean;
begin
 Result := FIsSwiched;
end;

procedure TCustomDevice.SetIsSwiched(val : Boolean);
begin
 FIsSwiched := Val;
end;

procedure TDeviceManager.SetDeviceSwitchMode(IsSwitched: Boolean;  Number: Integer);
begin
 GetDevice(Number).IsSwiched := IsSwitched;
 ProssesState;
end;

procedure TDeviceManager.ProssesState;
begin
 if GetDevice(1).IsOperating and GetDevice(3).IsOperating
   and GetDevice(5).IsSwiched
 then
   GetDevice(4).IsOperating := False;

 if (GetDevice(1).IsSwiched and not GetDevice(3).IsSwiched) or
    (not GetDevice(5).FIsSwiched)
 then
   GetDevice(4).IsSwiched := True;

 if GetDevice(5).IsOperating and GetDevice(2).IsOperating and
   GetDevice(1).IsSwiched
 then
   GetDevice(3).IsSwiched := True;

 if GetDevice(2).IsSwiched or GetDevice(5).IsSwiched then
   GetDevice(4).IsSwiched := False;

end;

procedure TDeviceManager.GetDeviceSatate(Number: Integer; var IsSwitched: Boolean; var IsOperationg: Boolean);
begin
 IsSwitched := GetDevice(Number).IsSwiched;
 IsOperationg := GetDevice(Number).IsOperating;
end;

end.


 
Kolan ©   (2006-04-07 15:15) [14]

Вот пример использования: Нужно для кождого станка по 2 ComboBox"а
unit KDeviceTaskMainForm;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, KDeviceTaskDeviceManager, StdCtrls;

type
 TForm1 = class(TForm)
   GroupBox1: TGroupBox;
   Device1IsSwitchedComboBox: TComboBox;
   Device1IsOperatingComboBox: TComboBox;
   Label1: TLabel;
   Label2: TLabel;
   GroupBox2: TGroupBox;
   Label3: TLabel;
   Label4: TLabel;
   Device2IsSwitchedComboBox: TComboBox;
   Device2IsOperatingComboBox: TComboBox;
   GroupBox3: TGroupBox;
   Label5: TLabel;
   Label6: TLabel;
   Device3IsSwitchedComboBox: TComboBox;
   Device3IsOperatingComboBox: TComboBox;
   GroupBox4: TGroupBox;
   Label7: TLabel;
   Label8: TLabel;
   Device4IsSwitchedComboBox: TComboBox;
   Device4IsOperatingComboBox: TComboBox;
   GroupBox5: TGroupBox;
   Label9: TLabel;
   Label10: TLabel;
   Device5IsSwitchedComboBox: TComboBox;
   Device5IsOperatingComboBox: TComboBox;
   procedure Device5IsOperatingComboBoxChange(Sender: TObject);
   procedure Device4IsOperatingComboBoxChange(Sender: TObject);
   procedure Device3IsOperatingComboBoxChange(Sender: TObject);
   procedure Device2IsOperatingComboBoxChange(Sender: TObject);
   procedure Device1IsOperatingComboBoxChange(Sender: TObject);
   procedure Device5IsSwitchedComboBoxChange(Sender: TObject);
   procedure Device4IsSwitchedComboBoxChange(Sender: TObject);
   procedure Device3IsSwitchedComboBoxChange(Sender: TObject);
   procedure Device2IsSwitchedComboBoxChange(Sender: TObject);
   procedure Device1IsSwitchedComboBoxChange(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
   procedure ChangeState;
 public
   { Public declarations }
   FDeviceManager: TDeviceManager;
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ChangeState;
var
 IsOperatin, IsSwitched: Boolean;
begin
 FDeviceManager.GetDeviceSatate(1, IsSwitched, IsOperatin);
 if IsSwitched then
   Device1IsSwitchedComboBox.ItemIndex := 0
 else
   Device1IsSwitchedComboBox.ItemIndex := 1;
 if IsOperatin then
   Device1IsOperatingComboBox.ItemIndex := 0
 else
   Device1IsOperatingComboBox.ItemIndex := 1;

 FDeviceManager.GetDeviceSatate(2, IsSwitched, IsOperatin);
 if IsSwitched then
   Device2IsSwitchedComboBox.ItemIndex := 0
 else
   Device2IsSwitchedComboBox.ItemIndex := 1;
 if IsOperatin then
   Device2IsOperatingComboBox.ItemIndex := 0
 else
   Device2IsOperatingComboBox.ItemIndex := 1;

 FDeviceManager.GetDeviceSatate(3, IsSwitched, IsOperatin);
 if IsSwitched then
   Device3IsSwitchedComboBox.ItemIndex := 0
 else
   Device3IsSwitchedComboBox.ItemIndex := 1;
 if IsOperatin then
   Device3IsOperatingComboBox.ItemIndex := 0
 else
   Device3IsOperatingComboBox.ItemIndex := 1;

 FDeviceManager.GetDeviceSatate(4, IsSwitched, IsOperatin);
 if IsSwitched then
   Device4IsSwitchedComboBox.ItemIndex := 0
 else
   Device4IsSwitchedComboBox.ItemIndex := 1;
 if IsOperatin then
   Device4IsOperatingComboBox.ItemIndex := 0
 else
   Device4IsOperatingComboBox.ItemIndex := 1;

 FDeviceManager.GetDeviceSatate(5, IsSwitched, IsOperatin);
 if IsSwitched then
   Device5IsSwitchedComboBox.ItemIndex := 0
 else
   Device5IsSwitchedComboBox.ItemIndex := 1;
 if IsOperatin then
   Device5IsOperatingComboBox.ItemIndex := 0
 else
   Device5IsOperatingComboBox.ItemIndex := 1;

end;

procedure TForm1.Device1IsOperatingComboBoxChange(Sender: TObject);
begin
 if (Sender as TComboBox).ItemIndex = 0 then
   FDeviceManager.SetDeviceOperatingMode(True, 1)
 else
   FDeviceManager.SetDeviceOperatingMode(False, 1);
 ChangeState;
end;

procedure TForm1.Device1IsSwitchedComboBoxChange(Sender: TObject);
begin
 if (Sender as TComboBox).ItemIndex = 0 then
   FDeviceManager.SetDeviceSwitchMode(True, 1)
 else
   FDeviceManager.SetDeviceSwitchMode(False, 1);
 ChangeState;
end;

procedure TForm1.Device2IsOperatingComboBoxChange(Sender: TObject);
begin
 if (Sender as TComboBox).ItemIndex = 0 then
   FDeviceManager.SetDeviceOperatingMode(True, 2)
 else
   FDeviceManager.SetDeviceOperatingMode(False, 2);
 ChangeState;
end;

procedure TForm1.Device2IsSwitchedComboBoxChange(Sender: TObject);
begin
 if (Sender as TComboBox).ItemIndex = 0 then
   FDeviceManager.SetDeviceSwitchMode(True, 2)
 else
   FDeviceManager.SetDeviceSwitchMode(False, 2);
 ChangeState;
end;

procedure TForm1.Device3IsOperatingComboBoxChange(Sender: TObject);
begin
 if (Sender as TComboBox).ItemIndex = 0 then
   FDeviceManager.SetDeviceOperatingMode(True, 3)
 else
   FDeviceManager.SetDeviceOperatingMode(False, 3);
 ChangeState;
end;

procedure TForm1.Device3IsSwitchedComboBoxChange(Sender: TObject);
begin
 if (Sender as TComboBox).ItemIndex = 0 then
   FDeviceManager.SetDeviceSwitchMode(True, 3)
 else
   FDeviceManager.SetDeviceSwitchMode(False, 3);
 ChangeState;
end;

procedure TForm1.Device4IsOperatingComboBoxChange(Sender: TObject);
begin
 if (Sender as TComboBox).ItemIndex = 0 then
   FDeviceManager.SetDeviceOperatingMode(True, 4)
 else
   FDeviceManager.SetDeviceOperatingMode(False, 4);
 ChangeState;
end;

procedure TForm1.Device4IsSwitchedComboBoxChange(Sender: TObject);
begin
 if (Sender as TComboBox).ItemIndex = 0 then
   FDeviceManager.SetDeviceSwitchMode(True, 4)
 else
   FDeviceManager.SetDeviceSwitchMode(False, 4);
 ChangeState;
end;

procedure TForm1.Device5IsOperatingComboBoxChange(Sender: TObject);
begin
 if (Sender as TComboBox).ItemIndex = 0 then
   FDeviceManager.SetDeviceOperatingMode(True, 5)
 else
   FDeviceManager.SetDeviceOperatingMode(False, 5);
 ChangeState;
end;

procedure TForm1.Device5IsSwitchedComboBoxChange(Sender: TObject);
begin
 if (Sender as TComboBox).ItemIndex = 0 then
   FDeviceManager.SetDeviceSwitchMode(True, 5)
 else
   FDeviceManager.SetDeviceSwitchMode(False, 5);
 ChangeState;  
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 FDeviceManager := TDeviceManager.Create;
 ChangeState;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 FDeviceManager.Free;
end;

end.


 
oldman ©   (2006-04-07 16:10) [15]

А подумать нельзя? А условие перечитать?
Итак примем, что "включен" это значит "работает"!
Обозначим "работает"=А.
Итак
1=А
4=А
Из условия: "Если выключен 2 или 5, то одновременно выключен и 4".
Значит,
2=А
5=А
Из условия: "Если 5 работает вместе со вторым при включенном 1 то включен 3.
Значит,
3=А
Получаем, что включены ВСЕ станки.
Из условия: "Если работают 1 и 3, то 4 не работает, при условии, что подключен 5"
Не пляшет!!!
Вывод: ОШИБКА В УСЛОВИИ.
Или "работает" и "включен" не одно и тоже. :)))
А если это так, продолжаем логически мыслить.
Но это ты сам.
И без всяких программ на Дельфи!!! (Перед написанием кода обязан присутствовать анализ задачи! Если задача не имеет решения или некорректно поставлена, заказчику об этом сообщается!)


 
Kolan ©   (2006-04-08 12:13) [16]

Ну вот... Никому не нужно :(


 
TUser ©   (2006-04-08 13:08) [17]

> Ну вот... Никому не нужно :(

Кому ж такое надо? Ты бы всем комбобоксам один обработчик назначил, а то пишется одинаковый текст пять раз!


 
GrayFace ©   (2006-04-08 15:40) [18]

> Если работают первый и третий станки, то четвертый не работает
> при условии, что подключен пятый станок.

Расплывчатый смысл.
а) 4 не работает <= 5 работает
б) 4 не работает <=> 5 работает
в) 4 не работает => 5 работает
Что имеется ввиду?


 
Таня   (2006-04-09 12:41) [19]

Большое спасибо
Пацаны, толстые концы

> Не в рифму, зато правда

Вместо денежного вознаграждения и натуры шлю воздушный поцелуй. Я имею ввиду oldman"у, Kolan"у


 
oldman ©   (2006-04-10 17:19) [20]


> Таня   (09.04.06 12:41) [19]
> ... шлю воздушный поцелуй. Я имею ввиду oldman"у, ...


спасибо, заходите еще.
:)))


 
Ega23 ©   (2006-04-10 17:27) [21]


> Вместо денежного вознаграждения и натуры шлю воздушный поцелуй.
>  


Я так и знал, что не даст...


 
oldman ©   (2006-04-10 17:28) [22]


> Ega23 ©   (10.04.06 17:27) [21]


Грубо и не по-европейски...
(НеПомнюОткуда ©)


 
Ega23 ©   (2006-04-10 17:30) [23]


> Грубо и не по-европейски...


А мы - Азиопа  :о)


 
oldman ©   (2006-04-10 18:05) [24]


> Ega23 ©   (10.04.06 17:30) [23]
> А мы - Азиопа  :о)


Ты только это в Грибоедове не ляпни...
:)))))))))))))))))


 
GrayFace ©   (2006-04-11 10:36) [25]

А в Грибоедове - это где? В желудке трупа писателя? :)


 
Kolan ©   (2006-04-13 11:47) [26]

Таня   (09.04.06 12:41) [19]
Незачто :)

TUser ©   (08.04.06 13:08) [17]
Ну ступил. Основное - это же не комбобоксы



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2006.05.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.01 c
2-1145365419
kyn66
2006-04-18 17:03
2006.05.07
Порядковый номер дня в году


2-1145547338
el-magnifico
2006-04-20 19:35
2006.05.07
Excel FREE


2-1145316227
ooops
2006-04-18 03:23
2006.05.07
Поток(TThread)


15-1144933131
oldman
2006-04-13 16:58
2006.05.07
бывает в жизни удача...


15-1144990937
Ega23
2006-04-14 09:02
2006.05.07
С Днём рождения! 14 апреля





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский