C ++中的反馈算法 [英] Feedback Algorithm in C++

查看:119
本文介绍了C ++中的反馈算法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我问了一个有关反馈算法(CPU调度)的问题.
一些朋友说我必须给他们看一些代码,也许它们可以解决我的问题.
我有这个代码.但是这段代码显示了量子1,2,3,4的反馈,并画了一个
在程序结束时绘制图形,并计算平均值.
现在我只想计算量子2和量子4并绘制它们的图
并计算它们的平均值.

此代码的哪一部分必须删除或编辑?

Hi

I asked a question about feedback algorithm (CPU scheduling).
Some of friends say I must show them some codes perhaps they can solve my problem.
I have this code . but this code show the feedback in quantum 1,2,3,4 and draw a
graph at the end of the program and also calculate the average.
Now I want it calculate only quantum 2 and quantum 4 and also draw the graph of them
and also calculate the average of them.

Which part of this code must be deleted or edited ?

//============================= FeeDBacK Algorithm =============================

//==============================================================================
//==============================    	 START 	     ===========================
//==============================================================================

	  //=========================== USE LIBRARY ==========================
	  //==================================================================
	  #include <iostream.h>
	  #include <conio.h>
	  #include <stdlib.h>
	  //==================================================================

	  //========================= Class of Queue =========================
	  //==================================================================
	  class queue {
	  public:
		  queue();
		  void addq(char);
		  void deleteq();
		  int  searchq(char);
		  int  empty();
		  int  item[5];
		  int  front, rear, underflow;
	  } q1,q2,q3,q4;
	  //======================= End Class of Queue =======================
	  //==================================================================



//================================= MAIN FUNCTION ==============================
int main()
{
 //=============================================================================
 int n;
 cout <<" ========================= FeeDBacK Algorithm ==========================\n";
 cout <<" =======================================================================\n";
 cout <<" =============             Welcome To MY Program            ============\n";
 cout <<" =======================================================================\n";
 cout <<" =======================================================================\n";

 cout <<" ========                   		                        ========\n";
 cout <<" =======================================================================\n";
 cout <<" =======================================================================\n";
 cout <<" =======              Please Enter Count Of Process              =======\n";
 cout <<" =======================================================================\n";
 cout<<"\n ";
 cin >>n;
 //=============================================================================

 //=============================================================================
 clrscr();
 //=============================================================================

 //================================= Parameter =================================
 const int b = 100;
 char process[b];
 int arrival_time[b];
 int execution_time[b];
 int Exe_t[b];
 int Response_Time[b];
 int Wait_time[b];
 int Exe_time[b];
 int at=0;
 //=============================================================================

 //================================ process name ================================
 for (int i=0 ; i<n mode="hold" />	process[i]='A'+i;
 //=============================================================================

 //================================= Input =====================================
 cout <<" ========================= FeeDBacK Algorithm ==========================\n";
 cout <<" =======================================================================\n";
 cout <<" =====             Please Enter Process Of Arrival_time            =====\n";
 cout <<" =======================================================================\n";
 cout<<"\n";
 for (int j=0 ; j<n mode="hold" /> {
	cout<<" Arrival_time [" << process[j] <<"] = : ";
	cin>> arrival_time[j];
	cout<<"\n";
 }
 clrscr();
 //=============================================================================

 //================================= Input ======================================
 cout <<" ========================= FeeDBacK Algorithm ==========================\n";
 cout <<" =======================================================================\n";
 cout <<" ======          Please Enter Process Of Execution_time           ======\n";
 cout <<" =======================================================================\n";
 cout<<"\n";
 for (int k=0 ; k<n mode="hold" /> {
	cout<<" Execution_time [" << process[k] <<"] = : ";
	cin >> execution_time[k];
	Exe_t[k]= execution_time[k];
	cout<<"\n";
 }
 clrscr();
 //=============================================================================

 //============================== Program Execute ==============================
 //=============================================================================
 cout <<" =======================================================================\n";
 cout <<"1   5   10   15   20   25   30   35   40   45   50   55   60   65   70\n";
 cout <<" =======================================================================\n";
 for (int r=0 ; r<n mode="hold" /> {
	 if (arrival_time[r]>at)
	 {
			while (at!=arrival_time[0])
				at=at+1;
	 }
	 if (arrival_time[r]<=at)
	 {                        //============================ Execution Queu 1 ===
		  execution_time[r]=execution_time[r]-1;
		  at=at+1;
		  gotoxy(at,r+4);
		  cout<< process[r] ;
		  if (execution_time[r]!=0)
		  {
			 q2.addq(process[r]);
			 q1.deleteq();

		  }
		  else
		  {
			  q1.deleteq();
			  Response_Time[r]=at;
		  }
	 }                        //======================== End Execution Queu 1 ===
	 if (r==n-1)
		  break;
	 if (arrival_time[r+1]<=at)
		  continue;
	 else  for (int f=0 ; f<=r ; f++)
			 {
				if (q2.searchq(process[f]))
				{                           //================= Execution Queu 2 ===
					execution_time[f]=execution_time[f]-1;
					at=at+1;
					gotoxy(at,f+4);
					cout<< process[f] ;
					if (execution_time[f]!=0)
					{
						execution_time[f]=execution_time[f]-1;
						at=at+1;
						gotoxy(at,f+4);
						cout<< process[f] ;
						if (execution_time[f]!=0)
						{
							q3.addq(process[f]);
							q2.deleteq();
						}
						else
						{
							q2.deleteq();
							Response_Time[f]=at;
						}
					}
					else
					{
						q2.deleteq();
						Response_Time[f]=at;
					}
					if (arrival_time[f+1]<=at)
						break;
				}                           //============= End Execution Queu 2 ===
				else;
			 }
	 if (arrival_time[r+1]<=at)
		 continue;
	 else for (int y=0 ; y<=r ; y++)
			{
			  if (q3.searchq(process[y]))
			  {                           //===================Execution Queu 3 ===
				  execution_time[y]=execution_time[y]-1;
				  at=at+1;
				  gotoxy(at,y+4);
				  cout<< process[y] ;
				  if (execution_time[y]!=0)
				  {
					  execution_time[y]=execution_time[y]-1;
					  at=at+1;
					  gotoxy(at,y+4);
					  cout<< process[y] ;
					  if (execution_time[y]!=0)
					  {
						  execution_time[y]=execution_time[y]-1;
						  at=at+1;
						  gotoxy(at,y+4);
						  cout<< process[y] ;
						  if (execution_time[y]!=0)
						  {
							  execution_time[y]=execution_time[y]-1;
							  at=at+1;
							  gotoxy(at,y+4);
							  cout<< process[y] ;
							  if (execution_time[y]!=0)
							  {
								  q4.addq(process[y]);
								  q3.deleteq();
							  }
							  else
							  {
								  q3.deleteq();
								  Response_Time[y]=at;
							  }
						  }
						  else
						  {
							  q3.deleteq();
							  Response_Time[y]=at;
						  }
					  }
					  else
					  {
						  q3.deleteq();
						  Response_Time[y]=at;
					  }
				  }
				  else
				  {
					  q3.deleteq();
					  Response_Time[y]=at;
				  }
				  if (arrival_time[y+1]<=at)
						break;
			  }                            //============= End Execution Queu 3 ===
			  else;
		  }
		if (arrival_time[r+1]<=at)
		 continue;
	 else  for (int t=0 ; t<=r ; t++)
			 {
				if (q4.searchq(process[t]))
				{                      //====================== Execution Queu 4 ===
					 execution_time[t]=execution_time[t]-1;
					 at=at+1;
					 gotoxy(at,t+4);
					 cout<< process[t] ;
					 if (execution_time[t]!=0)
					 {
						  execution_time[t]=execution_time[t]-1;
						  at=at+1;
						  gotoxy(at,t+4);
						  cout<< process[t] ;
						  if (execution_time[t]!=0)
						  {
								execution_time[t]=execution_time[t]-1;
								at=at+1;
								gotoxy(at,t+4);
								cout<< process[t] ;
							  if (execution_time[t]!=0)
							  {
									execution_time[t]=execution_time[t]-1;
									at=at+1;
									gotoxy(at,t+4);
									cout<< process[t] ;
									if (execution_time[t]!=0)
									{
										 execution_time[t]=execution_time[t]-1;
										 at=at+1;
										 gotoxy(at,t+4);
										 cout<< process[t] ;
										 if (execution_time[t]!=0)
										 {
											  execution_time[t]=execution_time[t]-1;
											  at=at+1;
											  gotoxy(at,t+4);
											  cout<< process[t] ;
											  if (execution_time[t]!=0)
											  {
													execution_time[t]=execution_time[t]-1;
													at=at+1;
													gotoxy(at,t+4);
													cout<< process[t] ;
													if (execution_time[t]!=0)
													{
														 execution_time[t]=execution_time[t]-1;
														 at=at+1;
														 gotoxy(at,t+4);
														 cout<< process[t] ;
														 if (execution_time[t]!=0)
														 {
															  q4.deleteq();
														 }
														 else
														 {
															 q4.deleteq();
															 Response_Time[t]=at;
														 }
													}
													else
													{
														q4.deleteq();
														Response_Time[t]=at;
													}
											  }
											  else
											  {
												  q4.deleteq();
												  Response_Time[t]=at;
											  }
										 }
										 else
										 {
											 q4.deleteq();
											 Response_Time[t]=at;
										 }
									}
									else
									{
										q4.deleteq();
										Response_Time[t]=at;
									}
							  }
							  else
							  {
								  q4.deleteq();
								  Response_Time[t]=at;
							  }
						  }
						  else
						  {
								q4.deleteq();
								Response_Time[t]=at;
						  }
					 }
					 else
					 {
						 q4.deleteq();
						 Response_Time[t]=at;
					 }
					 if (arrival_time[t+1]<=at)
						  break;
				}                       //================= End Execution Queu 4 ===
				else;
			 }
	 if (arrival_time[r+1]<=at)
		 continue;
 }
 //============================= End Execution Queu ============================
 //=============================================================================

 //=========================== Execution Queu 2 ================================
 //=============================================================================
 for (int l=0 ; l<n mode="hold" /> {
	if (q2.searchq(process[l]))
	{
	  execution_time[l]=execution_time[l]-1;
	  at=at+1;
	  gotoxy(at,l+4);
	  cout<< process[l] ;
	  if (execution_time[l]!=0)
	  {
			execution_time[l]=execution_time[l]-1;
			at=at+1;
			gotoxy(at,l+4);
			cout<< process[l] ;
			if (execution_time[l]!=0)
			{
			  q3.addq(process[l]);
			  q2.deleteq();
			}
			else
			{
				q2.deleteq();
				Response_Time[l]=at;
			}
	  }
	  else
	  {
			q2.deleteq();
			Response_Time[l]=at;
	  }
	}
	else;
 }
 //=========================== End Execution Queu 2 ============================
 //=============================================================================

 //============================ Execution Queu 3 ===============================
 //=============================================================================
 for (int v=0 ; v<n mode="hold" /> {
	if (q3.searchq(process[v]))
	{
		execution_time[v]=execution_time[v]-1;
		at=at+1;
		gotoxy(at,v+4);
		cout<< process[v] ;
		if (execution_time[v]!=0)
		{
			execution_time[v]=execution_time[v]-1;
			at=at+1;
			gotoxy(at,v+4);
			cout<< process[v] ;
			if (execution_time[v]!=0)
			{
				execution_time[v]=execution_time[v]-1;
				at=at+1;
				gotoxy(at,v+4);
				cout<< process[v] ;
				if (execution_time[v]!=0)
				{
					execution_time[v]=execution_time[v]-1;
					at=at+1;
					gotoxy(at,v+4);
					cout<< process[v] ;
					if (execution_time[v]!=0)
					{
						q4.addq(process[v]);
						q3.deleteq();
					}
					else
					{
						q3.deleteq();
						Response_Time[v]=at;
					}
				}
				else
				{
					q3.deleteq();
					Response_Time[v]=at;
				}
			}
			else
			{
				q3.deleteq();
				Response_Time[v]=at;
			}
		}
		else
		{
			q3.deleteq();
			Response_Time[v]=at;
		}
	}
	else;
 }

 //=========================== End Execution Queu 3 ============================
 //=============================================================================

 //============================= Execution Queu 4 ==============================
 //=============================================================================
 for (int h=0 ; h<n mode="hold" /> {
	if(q4.searchq(process[h]))
	{
		 execution_time[h]=execution_time[h]-1;
		 at=at+1;
		 gotoxy(at,h+4);
		 cout<< process[h] ;
		 if (execution_time[h]!=0)
		 {
			 execution_time[h]=execution_time[h]-1;
			 at=at+1;
			 gotoxy(at,h+4);
			 cout<< process[h] ;
			 if (execution_time[h]!=0)
			 {
				 execution_time[h]=execution_time[h]-1;
				 at=at+1;;
				 gotoxy(at,h+4);
				 cout<< process[h] ;
				 if (execution_time[h]!=0)
				 {
					 execution_time[h]=execution_time[h]-1;
					 at=at+1;
					 gotoxy(at,h+4);
					 cout<< process[h] ;
					 if (execution_time[h]!=0)
					 {
						 execution_time[h]=execution_time[h]-1;
						 at=at+1;
						 gotoxy(at,h+4);
						 cout<< process[h] ;
						 if (execution_time[h]!=0)
						 {
							  execution_time[h]=execution_time[h]-1;
							  at=at+1;
							  gotoxy(at,h+4);
							  cout<< process[h] ;
							  if (execution_time[h]!=0)
							  {
									execution_time[h]=execution_time[h]-1;
									at=at+1;
									gotoxy(at,h+4);
									cout<< process[h] ;
									if (execution_time[h]!=0)
									{
										 execution_time[h]=execution_time[h]-1;
										 at=at+1;
										 gotoxy(at,h+4);
										 cout<< process[h] ;
										 if (execution_time[h]!=0)
										 {
											  q4.deleteq();
										 }
										 else
										 {
											  q4.deleteq();
											  Response_Time[h]=at;
										 }
									}
									else
									{
										 q4.deleteq();
										 Response_Time[h]=at;
									}
							  }
							  else
							  {
									q4.deleteq();
									Response_Time[h]=at;
							  }
						 }
						 else
						 {
							  q4.deleteq();
							  Response_Time[h]=at;
						 }
					 }
					 else
					 {
						 q4.deleteq();
						 Response_Time[h]=at;
					 }
				}
				else
				{
					q4.deleteq();
					Response_Time[h]=at;
				}
			}
			else
			{
				 q4.deleteq();
				 Response_Time[h]=at;
			}
		}
		else
		{
			q4.deleteq();
			Response_Time[h]=at;
		}
	}
	else;
 }
 //=========================== End Execution Queu 4 ============================
 //=============================================================================

 //================================= Wait_time =================================
 //=============================================================================
	for (int e=0 ; e<n mode="hold" />	  Wait_time[e]= (Response_Time[e] - Exe_t[e] - arrival_time[e]);

 //=============================== End Wait_time ===============================
 //=============================================================================

 //=============================================================================
 cout << "\n ======================================================================\n";
 cout << "  Process   Arrival_time   execution_time   Wait_time    Response_Time \n";
 cout << " ======================================================================\n";
 for (int z=0 ; z<n mode="hold" /> {
	cout << "     "<<process[z]<<"\t\t"<<arrival_time[z]<<"\t\t"<<Exe_t[z]<<"\t\t"<<Wait_time[z]<<"       \t"<<Response_Time[z];
	cout<<"\n";
 }
 cout << " ======================================================================\n\n";
 //=============================================================================

 //============================ Avg_Response_Time ==============================
 //=============================================================================
 float Sum_E=0.0;
 for (int a=0 ; a<n mode="hold" />  Sum_E = (Sum_E + Response_Time[a] - arrival_time[0]);
 float Avg_E = (Sum_E/n);
 cout << " -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-\n";
 cout<<"\t\t\t Avrage_Response_Time = " << Avg_E << "\n";
 //=============================================================================

 //============================= Avg_Response_Time =============================
 //=============================================================================
  float Sum_W=0.0;
  for (int m=0 ; m<n mode="hold" />	Sum_W = Sum_W + Wait_time[m];
  float Avg_W = (Sum_W/n);
  cout<<" -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-\n";
  cout<<"\t\t\t    Avrage_Wait_time = "<< Avg_W;
  cout<<"\n -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-\n";
  cout <<" ========================= FeeDBacK Algorithm ==========================\n";
  //============================================================================
}
//============================= END MAIN FUNCTION ==============================





//======= Queue Class Methods =======

//===================================

queue::queue()
{
	front = rear = -1;
}

//===================================

void queue::addq(char x)
{

		item[++rear] = x;
}

//===================================

void queue::deleteq()
{
	if(empty())
		underflow = 1;
	else
	{
		underflow = 0;
		front++;
	}
}

//===================================

int queue::empty()
{
	if(rear == front)
		return 1;
	return 0;
}

//===================================

int queue::searchq(char x)
{
	int i;
	for(i=front+1; i<=rear; i++)
		if(item[i] == x)
			return 1;
	return 0;
}

//===================================

//======= Queue Class Methods =======



//==============================================================================
//================  															=================
//============================    	 FINISH  	   =============================
//================  															=================
//==============================================================================

推荐答案

You''re ripping someone''s source and not even including all the code. clrscr() is not defined, (I''m assuming string) mode is not defined, and there are several syntax errors.

also, iostream.h is deprecated. use iostream.
You''re ripping someone''s source and not even including all the code. clrscr() is not defined, (I''m assuming string) mode is not defined, and there are several syntax errors.

also, iostream.h is deprecated. use iostream.


这篇关于C ++中的反馈算法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆