- Katılım
- 29 Mayıs 2019
- Mesajlar
- 8,583
- Tepkime puanı
- 2
Filozof problemi genel olarak ; 5 kişinin 4 adet çatal kullanarak yemeklerini yemesi problemidir.
Her kişinin yemeği ne kadar sürede yediğide belirtildikten sonra yemek sayısı girilerek yemeği yiyen kişi daha sonra çatalı bırakır çatal boşta kalan kişi tarafından kullanılır. Burada önemli problemlerden bir tanesi sürekli olarak bir kişinin aç kalmasını önlemektir.
Her kişinin yemeği ne kadar sürede yediğide belirtildikten sonra yemek sayısı girilerek yemeği yiyen kişi daha sonra çatalı bırakır çatal boşta kalan kişi tarafından kullanılır. Burada önemli problemlerden bir tanesi sürekli olarak bir kişinin aç kalmasını önlemektir.
Kod:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
int dizi[5]={0,0,0,0,0};
int yeme[5]={0,0,0,0,0};
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
String durum;
int catalsay=0;
if(CheckBox6->Checked)
catalsay++;
if(CheckBox7->Checked)
catalsay++;
if(CheckBox8->Checked)
catalsay++;
if(CheckBox9->Checked)
catalsay++;
if(CheckBox10->Checked)
catalsay++;
if(catalsay==4)
durum="tamam";
else
{
durum="hayir";
Application->MessageBoxA("Çatal Sayısı Dört Olmalıdır","UYARI",MB_ICONINFORMATION);
}
if((CheckBox1->Checked)||(CheckBox2->Checked)||(CheckBox3->Checked)||(CheckBox4->Checked)||(CheckBox5->Checked))
{
durum="hayir";
Application->MessageBoxA("Filozoflar Tıklanamaz","UYARI",MB_ICONINFORMATION);
}
if(Edit1->Text=="")
{
durum="hayir";
Application->MessageBoxA("Yemek Sayısı Giriniz","UYARI",MB_ICONINFORMATION);
}
if((Edit2->Text=="")||(Edit3->Text=="")||(Edit4->Text=="")||(Edit5->Text=="")||(Edit6->Text==""))
{
durum="hayir";
Application->MessageBoxA("Bekleme Sürelerini Giriniz","UYARI",MB_ICONINFORMATION);
}
if(durum=="tamam")
Timer1->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Timer2->Enabled=true;
int sira;
if(CheckBox6->Checked)
{
if(dizi[0]>=dizi[1])
sira=0;
else
sira=1;
if(sira==0)
{
if(CheckBox1->Checked==false && dizi[0]>=StrToInt(Edit2->Text))
{
CheckBox1->Checked=true;
CheckBox6->Checked=false;
dizi[0]=0;
Edit1->Text=IntToStr((StrToInt(Edit1->Text)-1));
}
else if(CheckBox2->Checked==false && dizi[1]>=StrToInt(Edit3->Text))
{
CheckBox2->Checked=true;
CheckBox6->Checked=false;
dizi[1]=0;
Edit1->Text=IntToStr((StrToInt(Edit1->Text)-1));
}
}
else if(sira==1)
{
if(CheckBox2->Checked==false && dizi[1]>=StrToInt(Edit3->Text))
{
CheckBox2->Checked=true;
CheckBox6->Checked=false;
dizi[1]=0;
Edit1->Text=IntToStr((StrToInt(Edit1->Text)-1));
}
else if(CheckBox1->Checked==false && dizi[0]>=StrToInt(Edit2->Text))
{
CheckBox1->Checked=true;
CheckBox6->Checked=false;
dizi[0]=0;
Edit1->Text=IntToStr((StrToInt(Edit1->Text)-1));
}
}
}
if(CheckBox7->Checked)
{
if(dizi[1]>=dizi[2])
sira=1;
else
sira=2;
if(sira==1)
{
if(CheckBox2->Checked==false && dizi[1]>=StrToInt(Edit3->Text))
{
CheckBox2->Checked=true;
CheckBox7->Checked=false;
dizi[1]=0;
Edit1->Text=IntToStr((StrToInt(Edit1->Text)-1));
}
else if(CheckBox3->Checked==false && dizi[2]>=StrToInt(Edit4->Text))
{
CheckBox3->Checked=true;
CheckBox7->Checked=false;
dizi[2]=0;
Edit1->Text=IntToStr((StrToInt(Edit1->Text)-1));
}
}
else if(sira==2)
{
if(CheckBox3->Checked==false && dizi[2]>=StrToInt(Edit4->Text))
{
CheckBox3->Checked=true;
CheckBox7->Checked=false;
dizi[2]=0;
Edit1->Text=IntToStr((StrToInt(Edit1->Text)-1));
}
else if(CheckBox2->Checked==false && dizi[1]>=StrToInt(Edit3->Text))
{
CheckBox2->Checked=true;
CheckBox7->Checked=false;
dizi[1]=0;
Edit1->Text=IntToStr((StrToInt(Edit1->Text)-1));
}
}
}
if(CheckBox8->Checked)
{
if(dizi[2]>=dizi[3])
sira=2;
else
sira=3;
if(sira==2)
{
if(CheckBox3->Checked==false && dizi[2]>=StrToInt(Edit4->Text))
{
CheckBox3->Checked=true;
CheckBox8->Checked=false;
dizi[2]=0;
Edit1->Text=IntToStr((StrToInt(Edit1->Text)-1));
}
else if(CheckBox4->Checked==false && dizi[3]>=StrToInt(Edit5->Text))
{
CheckBox4->Checked=true;
CheckBox8->Checked=false;
dizi[3]=0;
Edit1->Text=IntToStr((StrToInt(Edit1->Text)-1));
}
}
else if(sira==3)
{
if(CheckBox4->Checked==false && dizi[3]>=StrToInt(Edit5->Text))
{
CheckBox4->Checked=true;
CheckBox8->Checked=false;
dizi[3]=0;
Edit1->Text=IntToStr((StrToInt(Edit1->Text)-1));
}
else if(CheckBox3->Checked==false && dizi[2]>=StrToInt(Edit4->Text))
{
CheckBox3->Checked=true;
CheckBox8->Checked=false;
dizi[2]=0;
Edit1->Text=IntToStr((StrToInt(Edit1->Text)-1));
}
}
}
if(CheckBox9->Checked)
{
if(dizi[3]>=dizi[4])
sira=3;
else
sira=4;
if(sira==3)
{
if(CheckBox4->Checked==false && dizi[3]>=StrToInt(Edit5->Text))
{
CheckBox4->Checked=true;
CheckBox9->Checked=false;
dizi[3]=0;
Edit1->Text=IntToStr((StrToInt(Edit1->Text)-1));
}
else if(CheckBox5->Checked==false && dizi[4]>=StrToInt(Edit6->Text))
{
CheckBox5->Checked=true;
CheckBox9->Checked=false;
dizi[4]=0;
Edit1->Text=IntToStr((StrToInt(Edit1->Text)-1));
}
}
else if(sira==4)
{
if(CheckBox5->Checked==false && dizi[4]>=StrToInt(Edit6->Text))
{
CheckBox5->Checked=true;
CheckBox9->Checked=false;
dizi[4]=0;
Edit1->Text=IntToStr((StrToInt(Edit1->Text)-1));
}
else if(CheckBox4->Checked==false && dizi[3]>=StrToInt(Edit5->Text))
{
CheckBox4->Checked=true;
CheckBox9->Checked=false;
dizi[3]=0;
Edit1->Text=IntToStr((StrToInt(Edit1->Text)-1));
}
}
}
if(CheckBox10->Checked)
{
if(dizi[0]>=dizi[4])
sira=0;
else
sira=4;
if(sira==0)
{
if(CheckBox1->Checked==false && dizi[0]>=StrToInt(Edit2->Text))
{
CheckBox1->Checked=true;
CheckBox10->Checked=false;
dizi[0]=0;
Edit1->Text=IntToStr((StrToInt(Edit1->Text)-1));
}
else if(CheckBox5->Checked==false && dizi[4]>=StrToInt(Edit6->Text))
{
CheckBox5->Checked=true;
CheckBox10->Checked=false;
dizi[4]=0;
Edit1->Text=IntToStr((StrToInt(Edit1->Text)-1));
}
}
else if(sira==4)
{
if(CheckBox5->Checked==false && dizi[4]>=StrToInt(Edit6->Text))
{
CheckBox5->Checked=true;
CheckBox10->Checked=false;
dizi[4]=0;
Edit1->Text=IntToStr((StrToInt(Edit1->Text)-1));
}
else if(CheckBox1->Checked==false && dizi[0]>=StrToInt(Edit2->Text))
{
CheckBox1->Checked=true;
CheckBox10->Checked=false;
dizi[0]=0;
Edit1->Text=IntToStr((StrToInt(Edit1->Text)-1));
}
}
}
if(StrToInt(Edit1->Text)==0)
{
Timer1->Enabled=false;
Application->MessageBoxA("Yemek Bitti :))","UYARI",MB_ICONINFORMATION);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer2Timer(TObject *Sender)
{
if(!CheckBox1->Checked)
dizi[0]+=1;
else
yeme[0]+=1;
if(!CheckBox2->Checked)
dizi[1]+=1;
else
yeme[1]+=1;
if(!CheckBox3->Checked)
dizi[2]+=1;
else
yeme[2]+=1;
if(!CheckBox4->Checked)
dizi[3]+=1;
else
yeme[3]+=1;
if(!CheckBox5->Checked)
dizi[4]+=1;
else
yeme[4]+=1;
if(yeme[0]>=5)
{
if(CheckBox6->Checked==false)
{
yeme[0]=0;
CheckBox1->Checked=false;
CheckBox6->Checked=true;
}
else if(CheckBox10->Checked==false)
{
yeme[0]=0;
CheckBox1->Checked=false;
CheckBox10->Checked=true;
}
}
if(yeme[1]>=5)
{
if(CheckBox6->Checked==false)
{
yeme[1]=0;
CheckBox2->Checked=false;
CheckBox6->Checked=true;
}
else if(CheckBox7->Checked==false)
{
yeme[1]=0;
CheckBox2->Checked=false;
CheckBox7->Checked=true;
}
}
if(yeme[2]>=5)
{
if(CheckBox7->Checked==false)
{
yeme[2]=0;
CheckBox3->Checked=false;
CheckBox7->Checked=true;
}
else if(CheckBox8->Checked==false)
{
yeme[2]=0;
CheckBox3->Checked=false;
CheckBox8->Checked=true;
}
}
if(yeme[3]>=5)
{
if(CheckBox8->Checked==false)
{
yeme[3]=0;
CheckBox4->Checked=false;
CheckBox8->Checked=true;
}
else if(CheckBox9->Checked==false)
{
yeme[3]=0;
CheckBox4->Checked=false;
CheckBox9->Checked=true;
}
}
if(yeme[4]>=5)
{
if(CheckBox9->Checked==false)
{
yeme[4]=0;
CheckBox5->Checked=false;
CheckBox9->Checked=true;
}
else if(CheckBox10->Checked==false)
{
yeme[4]=0;
CheckBox5->Checked=false;
CheckBox10->Checked=true;
}
}
if(Timer1->Enabled==false)
Timer2->Enabled=false;
}
//---------------------------------------------------------------------------