• 大小: 340KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-07
  • 语言: 其他
  • 标签: 操作系统  

资源简介

进程同步模拟设计--吃水果问题,完全是自己写的,跟网上其他的不一样,很不一样,注释也是简单易懂

资源截图

代码片段和文件信息

#include 
using namespace std;


typedef struct  fruitsystem        
{
    int pingguojuzi;
int exist;       //定义一个存在量,方便son 和 daughter 拿
int empty;       //定义一个空的量,方便 baba 和 mama 放
int right;      // 定义一个对盘子的使用权
}*fruit;

void baba(fruit s);     //函数声明
void mama(fruit s);
void son(fruit s);
void daughter(fruit s);


int main()
{
fruit s;
s=new fruitsystem;
s->pingguo=0;
s->juzi=0;
s->exist =0;
s->empty =2;
    s->right =1;  //没有人使用盘子,盘子可以供给一个进程是用

int i1=0;
int i2=0;
    int j1=0;
int j2=0;
int k=1;
int a;
cout<<“有六个个角色:爸爸,妈妈,儿子1,儿子2,女儿1。请问你是哪个角色?“< cout<<“是爸爸请输入“1”,是妈妈请输入“2”,是儿子1请输入“31”,是儿子2请输入“32”,是女儿1请输入“41”,是女儿2请输入“42”“<   
while(k==1)
{
cin>>a;


if (a==1)     //-------------------------------------baba----------
{
if(s->empty!=0 && s->right==1)
{
baba(s);
if(j2>0)
{
daughter(s);   //程序同步
j2--;
}
}
else if(s->empty==0 && s->right==1)
{
cout<<“盘子已经满,请等待!“<<“前面已有“< i1++;
}

else if(s->right==0)
{
cout<<“盘子已被占用,请等待!“< i1++;
}


}


    if(a==2)     //-----------------------------------mama-------------
{
if(s->empty!=0 && s->right==1)
{
mama(s);
if(j1>0)
{
son(s);    //程序同步
j1--;
}
}
else if(s->empty==0 &&  s->right==1)
{
cout<<“盘子已经满,请等待!“<<“前面已有“< i2++;
}
else if(s->right==0)
{
cout<<“盘子已被占用,请等待!“< i2++;
}
}


if( a==31 || a==32)      //------------------son-------------
{
if(s->juzi>0 && s->right==1)
{
son(s);
if(i2>0)
{
mama(s);   // 程序同步
i2--;
}
}
else if (s->juzi==0 && s->right==1)
{
cout<<“盘子里面没有橘子!请等待!前有已有“< j1++;
}

else if( s->right==0)
{
cout<<“盘子已被占用,请等待!“< j1++;
}
}

if(a==41 || a==42)   //-------------------------daughter--------------
{
if(s->pingguo>0 && s->right==1)
{
daughter(s);
if(i1>0)
{
baba(s);    // 程序同步
i1--;
}
}
else if( s->pingguo==0 && s->right==1)
{
cout<<“盘子里面没有苹果!请等待!前有已有“< j2++;
}
else if( s->right==0)
{
cout<<“盘子已被占用,请等待!“< j2++;
}
}

cout<<“是否继续本程序?是输入“1”.否输入“2”“< cin>>k;
if(k==1)
{ cout<<“是爸爸请输入“1”,是妈妈请输入“2”,是儿子1请输入“31”,是儿子2请输入“32”,是女儿1请输入“41”,是女儿2请输入“42”“<
}



return 0;
}




void baba(fruit s)
{
if(s->right==1)
{

int ttt;
t=1;
cout<<“请放入苹果“< while(t==1&&s->empty>0)
{

s->right =0; //占用盘子使用权
    s->pingguo++;
cout<<“爸爸放入一个苹果“< cout<<“现在盘子里面有苹果:“<pingguo <<“个,有橘子:“<juzi <<“个“<      s->empty=s->empty-1;  // 空位减少 1
     cout<<“是否继续放入苹果?是请输入“1”,否输入“2”“<        cin>>t;
if(t==1&&s->empty ==0)
{
cout<<“盘子已满,请等待!“< goto end;
}
if(t==2)
{
goto end;
}
}


end:    c

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        6537  2013-01-25 20:16  os\吃水果.cpp
     文件      105472  2013-01-17 18:58  os\封面任务书.doc
     文件      354816  2013-01-25 20:10  os\报告.doc
     文件       29696  2009-11-30 16:34  os\评分表.doc
     目录           0  2013-01-25 20:16  os\

评论

共有 条评论