⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pc.cpp

📁 这是一个生产者消费者的实现方法
💻 CPP
字号:
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
   int t[10];
   int i,g,in,out,empty,full;
   char r;
   in=0;
   out=0;
   empty=10;
   full=0;
   
   for (i=0;i<=9;i++)
	{
		t[i]=0;
	}
	
	printf("1表示位置上有商品、0表示位置没有商品、P表示放入商品、C表示取出商品、Q表示退出\n");
	printf("显示现在缓冲区队列的情况:\n");
	for(i=0;i<=9;i++) printf("商品位置%d:%d       \n",i,t[i]);
	printf( "\n");
	
 g:   printf("请选择输入P或C或Q\n");
   printf("\b"); 
   scanf("%c",&r);
   printf("\b");
   
  if(r=='C')         
    {
             printf("\n");          
             printf("请输拿走生产产品个数\n");
             scanf("%d",&g);
             
             for (i=1;i<=g;i++)
		{
			if (full<=0)
			{	
				full=full-1;
			}
			else if ((full==10)&(empty<0))
			{
				empty=empty+1;
				out=(out+1) % 10;
				in=(in+1) % 10;
			}
			else if (full>0)
			{
				full=full-1;

				empty=empty+1;
				t[out]=0;
				out=(out+1) % 10;
			}
		}
	}
     printf("\n");
     printf("empty=%d\nful=%d\nin=%d\nout=%d\n",empty,full,in,out);
     printf("\n");

   	printf("缓冲区队列:\n");
       printf("\n");		
       for(i=0;i<=9;i++) printf("商品位置%d:%d       \n",i,t[i]);
       printf("\n");
if(r=='P')           
   {
             printf("\n");
             printf("请输入放入生产产品个数\n");
             scanf("%d",&g);
             
             for (i=1;i<=g;i++)
		{
			if ((empty==10) & (full<0))
			{
				full=full+1;
				in=(in+1) % 10;
				out=(out+1) % 10;
			}
			else if (empty>0)
			{
				empty=empty-1;
				full=full+1;
				t[in]=1;
				in=(in+1) % 10;
			}
			else if (empty<=0)
			{
				empty=empty-1;
		empty=empty-1;
			}
		}
	} 
	
if(r=='Q')
{
          return 0;
          }
	goto g ;
}          
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -