Форум: "Прочее";
Текущий архив: 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