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

📄 15km.cpp

📁 模拟具有环形岛的十字路口的交通流
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		 return 2;
	 else if(x<=seed && seed<x+y)
		 return 3;
	 else 
		 return 1;//直接右拐 ??
 }
// 返回1 是没车 1:没车可以通行 0:有车:不可以通行
int look1zhixing(float* a,int num)  //num尚未加1
{
	//totalzhixing1 区域内的车辆
	int totalzhixing1=0;
	for(int i1=1;i1<=num;i1++)
	{
		//90度
//		if((300<=(*(a+i1)) && (*(a+i1))<=360) || (0<=(*(a+i1)) && (*(a+i1))<=33)) //留3°给插进的车
		if((18<=(*(a+i1)) && (*(a+i1))<=33)) 
			totalzhixing1++;
	}
	if(totalzhixing1)
		return 0;
	else 
		return 1;
}
int insert1zhixing(float *a,int num)   
{
	int tick=0;
	int pos=0;
	float in=30;//插入30°
	if(num)
	{
	 for(int i2=num;i2>=1;i2--)
	 {
		if( in>=a[i2-1]  && in<a[i2])
		{
			tick=1;
			pos=i2;
			for(int k=num;k>=pos;k--)
			{
				a[k+1]=a[k];
			}
			a[pos]=in;
		}
		if(!tick)
		{
			a[++num]=in;
		}
	 }
	}
	else
	{
		a[1]=in;
		pos=1;
	}
	return pos;
} 

void insert(int* a,int p,int number,int num)  //未检验
{
     for(int k=num;k>=p;k--)
	 {
		 a[k+1]=a[k];
	 }
	 a[p]=number;
}
int look1left(float* a,int num)
{
   	//totalzhixing1 区域内的车辆
	int totalzhixing1=0;
	for(int i1=1;i1<=num;i1++)
	{
		//90度
//		if((300<=(*(a+i1)) && (*(a+i1))<=360) || (0<=(*(a+i1)) && (*(a+i1))<=33)) //留3°给插进的车
		if((18<=(*(a+i1)) && (*(a+i1))<=33)) 
			totalzhixing1++;
	}
	if(totalzhixing1)
		return 0;
	else 
		return 1;
}
int insert1left(float* a,int num)
{
	int tick=0;
	int pos=0;
	float in=30;//插入30°
	if(num)
	{
	 for(int i2=num;i2>=1;i2--)
	 {
		if( in>=a[i2-1]  && in<a[i2])
		{
			tick=1;
			pos=i2;
			for(int k=num;k>=pos;k--)
			{
				a[k+1]=a[k];
			}
			a[pos]=in;
		}
		if(!tick)
		{
			a[++num]=in;
		}
	 }
	}
	else
	{
		a[1]=in;
		pos=1;
	}
	return pos;
}
void minus(int* a,int num)  //具有特殊性
{
	for(int i1=1;i1<=num-1;i1++)
	{
		a[i1]=a[i1+1];
	}
}
int look2zhixing(float* a,int num)
{
    int total=0;
	for(int i1=1;i1<=num;i1++)
	{
		//90度
//		if((30<=(*(a+i1)) && (*(a+i1))<=123)) //留3°给插进的车
		if((108<=(*(a+i1)) && (*(a+i1))<=123))
			total++;
	}
	if(total)
		return 0;
	else 
		return 1;
}
int look2left(float* a,int num)
{
   int total=0;
	for(int i1=1;i1<=num;i1++)
	{
		//90度
//		if((30<=(*(a+i1)) && (*(a+i1))<=123)) //留3°给插进的车
		if((108<=(*(a+i1)) && (*(a+i1))<=123))
			total++;
	}
	if(total)
		return 0;
	else 
		return 1;
}
int insert2zhixing(float* a,int num)
{
	int tick=0;
	int pos=0;
	float in=120;//插入120°
	if(num)
	{
	 for(int i2=num;i2>=1;i2--)
	 {
		if( in>=a[i2-1]  && in<a[i2])
		{
			tick=1;
			pos=i2;
			for(int k=num;k>=pos;k--)
			{
				a[k+1]=a[k];
			}
			a[pos]=in;
		}
		if(!tick)
		{
			a[++num]=in;
		}
	 }
	}
	else
	{
		a[1]=in;
		pos=1;
	}
	return pos;
}
int insert2left(float* a,int num)
{
    int tick=0;
	int pos=0;
	float in=120;//插入120°
	if(num)
	{
	 for(int i2=num;i2>=1;i2--)
	 {
		if( in>=a[i2-1]  && in<a[i2])
		{
			tick=1;
			pos=i2;
			for(int k=num;k>=pos;k--)
			{
				a[k+1]=a[k];
			}
			a[pos]=in;
		}
		if(!tick)
		{
			a[++num]=in;
		}
	 }
	}
	else
	{
		a[1]=in;
		pos=1;
	}
	return pos;
}
int look3zhixing(float* a,int num)
{
    int total=0;
	for(int i1=1;i1<=num;i1++)
	{
		//90度
//		if((120<=(*(a+i1)) && (*(a+i1))<=213)) //留3°给插进的车
		if((198<=(*(a+i1)) && (*(a+i1))<=213)) //留3°给插进的车
			total++;
	}
	if(total)
		return 0;
	else 
		return 1;
}
int look3left(float* a,int num)
{
   int total=0;
	for(int i1=1;i1<=num;i1++)
	{
		//90度
//		if((120<=(*(a+i1)) && (*(a+i1))<=213)) //留3°给插进的车
		if((198<=(*(a+i1)) && (*(a+i1))<=213)) //留3°给插进的车
			total++;
	}
	if(total)
		return 0;
	else 
		return 1;
}
int insert3zhixing(float* a,int num)
{
    int tick=0;
	int pos=0;
	float in=210;//插入210°
	if(num)
	{
	 for(int i2=num;i2>=1;i2--)
	 {
		if( in>=a[i2-1]  && in<a[i2])
		{
			tick=1;
			pos=i2;
			for(int k=num;k>=pos;k--)
			{
				a[k+1]=a[k];
			}
			a[pos]=in;
		}
		if(!tick)
		{
			a[++num]=in;
		}
	 }
	}
	else
	{
		a[1]=in;
		pos=1;
	}
	return pos;
}
int insert3left(float* a,int num)
{
 int tick=0;
	int pos=0;
	float in=210;//插入210°
	if(num)
	{
	 for(int i2=num;i2>=1;i2--)
	 {
		if( in>=a[i2-1]  && in<a[i2])
		{
			tick=1;
			pos=i2;
			for(int k=num;k>=pos;k--)
			{
				a[k+1]=a[k];
			}
			a[pos]=in;
		}
		if(!tick)
		{
			a[++num]=in;
		}
	 }
	}
	else
	{
		a[1]=in;
		pos=1;
	}
	return pos;
}
int look4zhixing(float* a,int num)
{
    int total=0;
	for(int i1=1;i1<=num;i1++)
	{
		//90度
//		if((210<=(*(a+i1)) && (*(a+i1))<=303)) //留3°给插进的车
		if((288<=(*(a+i1)) && (*(a+i1))<=303)) //留3°给插进的车
			total++;
	}
	if(total)
		return 0;
	else 
		return 1;
}
int look4left(float* a,int num)
{
   int total=0;
	for(int i1=1;i1<=num;i1++)
	{
		//90度
//		if((210<=(*(a+i1)) && (*(a+i1))<=303)) //留3°给插进的车
		if((288<=(*(a+i1)) && (*(a+i1))<=303))
			total++;
	}
	if(total)
		return 0;
	else 
		return 1;
}
int insert4zhixing(float* a,int num)
{
    int tick=0;
	int pos=0;
	float in=300;//插入300°
	if(num)
	{
	 for(int i2=num;i2>=1;i2--)
	 {
		if( in>=a[i2-1]  && in<a[i2])
		{
			tick=1;
			pos=i2;
			for(int k=num;k>=pos;k--)
			{
				a[k+1]=a[k];
			}
			a[pos]=in;
		}
		if(!tick)
		{
			a[++num]=in;
		}
	 }
	}
	else
	{
		a[1]=in;
		pos=1;
	}
	return pos;
}
int insert4left(float* a,int num)
{
    int tick=0;
	int pos=0;
	float in=300;//插入300°
	if(num)
	{
	 for(int i2=num;i2>=1;i2--)
	 {
		if( in>=a[i2-1]  && in<a[i2])
		{
			tick=1;
			pos=i2;
			for(int k=num;k>=pos;k--)
			{
				a[k+1]=a[k];
			}
			a[pos]=in;
		}
		if(!tick)
		{
			a[++num]=in;
		}
	 }
	}
	else
	{
		a[1]=in;
		pos=1;
	}
	return pos;
}
void rebuild(float* a,int num,int* com,int* out)
{
	int tic=0;
	int po=0;
	float f[chang]={0};
	int fcom[chang]={0};
	int fout[chang]={0};
	int i1=0;
	for (i1=1;i1<=num;i1++)
	{
		if(a[i1]>=360)
			tic++;
	}
	if(!tic)
		return ;
	else
	{
		for(i1=num;i1>=1;i1--)
		{
			if(a[i1]>359.99 && a[i1-1]<=359.99)
			{
				po=i1;
			    for(int kk=po;kk<=num;kk++)
				{
                  f[kk-po+1]=a[kk];
				  fcom[kk-po+1]=com[kk];
				  fout[kk-po+1]=out[kk];
				}
			}
		}
		for(i1=po-1;i1>=1;i1--)
		{
             a[i1+num-po+1]=a[i1];
			 com[i1+num-po+1]=com[i1];
			 out[i1+num-po+1]=out[i1];
		}
		for(i1=1;i1<=num-po+1;i1++)
		{
			a[i1]=f[i1];
			com[i1]=fcom[i1];
			out[i1]=fout[i1];
		}
		for(int i7=1;i7<=num;i7++)
		{
			int t=(int)(a[i7]*1000);
			t=t%360000;
			a[i7]=(float)(t/1000);
		}

	}
}
void leave(float* a,int* zleave,int num,int leavenum,int* com,int *out)
{
	int c=1;
	float f[chang]={0};
	int fcom[chang]={0};
	int fout[chang]={0};
	for(int i1=1;i1<=num;i1++)
	{
		if(!zleave[i1])
		{
			f[c]=a[i1];
            fcom[c]=com[i1];
			fout[c]=out[i1];
			c++;
		}
	}
	c--;
	for(int i2=1;i2<=c;i2++)
	{
		a[i2]=f[i2];
		com[i2]=fcom[i2];
		out[i2]=fout[i2];

	}
	c++;
	for(int i=c;i<chang;i++)
	{
		a[i]=0;
		com[i]=0;
		out[i]=0;
	}
}
void reset(int* a)
{
    for(int qq=0;qq<chang;qq++)
		a[qq]=0;
}

⌨️ 快捷键说明

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