سلام من توی تابع Task_Generation میخوام با هر بار اجرا شدنش A, P, S مقدار رو برگردونه باید چه کاری انجام بدم هم در تابع main و هم در تابع Task_Generation
int main()
{
int j; // j denotes the index of processor
int i,RO;
int lost[1000];
int number;
int numberOfProcessors=0;
int tasksPeriods[1000];
double alpha;
int start_time , end_time , MTTF;
double UB; /* UB denotes backup utilization */
// double lost_sum, lost_average;
fstream wf;
wf.open("D:/writefile.txt",ios:ut);
fstream wft;
wft.open("D:/writeTasks.txt",ios::in);
for(alpha=0.1;alpha<=0.1;alpha+=0.05)
{//for a
int num=100;
number=200;
RO=1;
j =0;
start_time = 0;
MTTF = 5;
UB = 0;
for (i=0; i<1000; i++)
{
lost=0;
black_list=-1;
}
for(number;number<=200;number+=num)
{
end_time = LCM;
initial_Processors(LCM);
numberOfProcessors=assignTaskToProessors( number);//assign created tasks to processors
wf<<"alpha= "<<alpha<<" MTTF= "<<MTTF<< " "<< "lcm="<< LCM<< "\n";
wf<<" number task= "<<number<<" "<<" number of proc= "<<numberOfProcessors<<"\n";
cout<<"alpha= "<<alpha<<" MTTF= "<<MTTF<< " "<< "lcm="<< LCM<< "\n";
cout<< " number task= "<<number<<" "<<" number of proc= "<<numberOfProcessors<<"\n";
}
initial_time_of_faults();
for(int pCount=0;pCount<numberOfProcessors;pCount++)
{
Fault_Generation( end_time , MTTF, pCount);
}
Schedule_tasks (start_time ,end_time , numberOfProcessors );
BackupCount=0;
}//for a
// cout<<"\nreserved= "<<reserved_time<<"\n";
int ch2;
cout<<"enter ch2: ";
cin>>ch2;
for(int i=0;i<1000;i++)
//wf<<black_list<<"---";
wf.close();
wft.close();
//wff.close();
return 0;
}
int Task_Generation(double alpha, int number,long int LCM)
{
double r; /* random value in range [0,1) */
long int M=50; /* user supplied upper boundary */
int a,p,s ; /* n denotes index and number of tasks */
double p,c; /* p denotes period that generated and c denotes computation time generated*/
double d ; /* d denotes deadline */
double u ; /* u denotes utilization of task */
double U ; /* U denotes utlization of processor */
double v;
srand((unsigned) time(NULL)); /*initialize random number generator*/
/* Choose M. Upper bound */
p=0;
a=0;
s=0;
for(int counter=0;counter<number;counter++)
{
srand (time(NULL));
double x= typetask ( 0,1,2);
if (x==0)
{
r = ( (double)rand() / (double)(RAND_MAX+1) ); /* r is a random value in the range [0,1) */
double p = (r * M); /* p is a random value in the range [0,M) */
p =(int) p + 1 ;
if(p>M)
p=M;
p++;
}
else if (x==1)
{
double landa = ( (double)rand() / (double)(RAND_MAX+1) ); /* r is a random value in the range [0,1) */
landa = (landa * LCM); /* p is a random value in the range [0,M) */
landa =(int) landa + 1 ;
p=landa;
a++;
}
else
{
p=LCM;
s++;
}
int d=p; /* deadline = period */
//r = ( (double)rand() / (double)(RAND_MAX+1) );
double c = (double)p*alpha; /* c is a random value in the range [0,M) */
c=(int)c+1;
double u= c/p;
double z=2.0;
double v=((log10((double) T[counter].p)/log10(z))- floor((log10((double) T[counter].p)/log10(z))));
Ready_Task( p, d, c, u, v, counter);
} /* for*/
}
{
int j; // j denotes the index of processor
int i,RO;
int lost[1000];
int number;
int numberOfProcessors=0;
int tasksPeriods[1000];
double alpha;
int start_time , end_time , MTTF;
double UB; /* UB denotes backup utilization */
// double lost_sum, lost_average;
fstream wf;
wf.open("D:/writefile.txt",ios:ut);
fstream wft;
wft.open("D:/writeTasks.txt",ios::in);
for(alpha=0.1;alpha<=0.1;alpha+=0.05)
{//for a
int num=100;
number=200;
RO=1;
j =0;
start_time = 0;
MTTF = 5;
UB = 0;
for (i=0; i<1000; i++)
{
lost=0;
black_list=-1;
}
for(number;number<=200;number+=num)
{
end_time = LCM;
initial_Processors(LCM);
numberOfProcessors=assignTaskToProessors( number);//assign created tasks to processors
wf<<"alpha= "<<alpha<<" MTTF= "<<MTTF<< " "<< "lcm="<< LCM<< "\n";
wf<<" number task= "<<number<<" "<<" number of proc= "<<numberOfProcessors<<"\n";
cout<<"alpha= "<<alpha<<" MTTF= "<<MTTF<< " "<< "lcm="<< LCM<< "\n";
cout<< " number task= "<<number<<" "<<" number of proc= "<<numberOfProcessors<<"\n";
}
initial_time_of_faults();
for(int pCount=0;pCount<numberOfProcessors;pCount++)
{
Fault_Generation( end_time , MTTF, pCount);
}
Schedule_tasks (start_time ,end_time , numberOfProcessors );
BackupCount=0;
}//for a
// cout<<"\nreserved= "<<reserved_time<<"\n";
int ch2;
cout<<"enter ch2: ";
cin>>ch2;
for(int i=0;i<1000;i++)
//wf<<black_list<<"---";
wf.close();
wft.close();
//wff.close();
return 0;
}
int Task_Generation(double alpha, int number,long int LCM)
{
double r; /* random value in range [0,1) */
long int M=50; /* user supplied upper boundary */
int a,p,s ; /* n denotes index and number of tasks */
double p,c; /* p denotes period that generated and c denotes computation time generated*/
double d ; /* d denotes deadline */
double u ; /* u denotes utilization of task */
double U ; /* U denotes utlization of processor */
double v;
srand((unsigned) time(NULL)); /*initialize random number generator*/
/* Choose M. Upper bound */
p=0;
a=0;
s=0;
for(int counter=0;counter<number;counter++)
{
srand (time(NULL));
double x= typetask ( 0,1,2);
if (x==0)
{
r = ( (double)rand() / (double)(RAND_MAX+1) ); /* r is a random value in the range [0,1) */
double p = (r * M); /* p is a random value in the range [0,M) */
p =(int) p + 1 ;
if(p>M)
p=M;
p++;
}
else if (x==1)
{
double landa = ( (double)rand() / (double)(RAND_MAX+1) ); /* r is a random value in the range [0,1) */
landa = (landa * LCM); /* p is a random value in the range [0,M) */
landa =(int) landa + 1 ;
p=landa;
a++;
}
else
{
p=LCM;
s++;
}
int d=p; /* deadline = period */
//r = ( (double)rand() / (double)(RAND_MAX+1) );
double c = (double)p*alpha; /* c is a random value in the range [0,M) */
c=(int)c+1;
double u= c/p;
double z=2.0;
double v=((log10((double) T[counter].p)/log10(z))- floor((log10((double) T[counter].p)/log10(z))));
Ready_Task( p, d, c, u, v, counter);
} /* for*/
}