IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   C ve C++ (https://www.ircforumlari.net/c-ve-c/)
-   -   Filozof Problemi Programı (https://www.ircforumlari.net/c-ve-c/600421-filozof-problemi-programi.html)

Swat 11 Temmuz 2014 10:33

Filozof Problemi Programı
 
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.

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;
}
//---------------------------------------------------------------------------



Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 08:50.

Powered by vBulletin® Version 3.8.8 Beta 3
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2024 IRCForumlari.Net