Convert the following Matlab code to C. The output must be identical.
box_title='Enter no. of Tasks';
entries={'No. of Tasks'};
h=inputdlg(entries,box_title);
Tasks=str2num(h{1});
A=zeros(Tasks,5);
box_title='Enter Task parameters';
entries={'releaseT','period','executeT','deadline'};
for loops=1:Tasks
h=inputdlg(entries,box_title);
release=str2num(h{1});
period=str2num(h{2});
executeT=str2num(h{3});
deadline=str2num(h{4});
A(loops,1)=release;
A(loops,2)=period;
A(loops,3)=executeT;
A(loops,4)=deadline;
A(loops,5)=1;
A(loops,6)=executeT;
A(loops,7)=loops;
end
clc;
disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::');
T=0;
B=A;
D=A;
Lcm=1;
for i=1:Tasks
Lcm=lcm(A(i,2),Lcm);
end
DispV2=[];
T=0;
disp('LCM');
disp(Lcm)
D=sortrows(D,[4]);
E=D;
ind=0;
while(T<Lcm)
ind=ind+1;
disp('++++++++++++++++++++++++++++++++++++++++++++++');
if(1)
disp(D);
for k=1:Tasks
if(D(k,4)<=T)
DispV2(ind,1)=ind;
DispV2(ind,2)=T;
DispV2(ind,4)=D(k,7);
DispV2(ind,5)=D(k,5);
DispV2(ind,6)=5;
DispV2(ind,3)=T;
disp(' misses deadline');
D(k,1)=D(k,1)+D(k,2);
D(k,4)=D(k,4)+D(k,2);
D(k,6)=D(k,3);
D(k,5)=D(k,5)+1;
ind=ind+1;
disp(D);
end
end
end
Rj=0;
for k=1:Tasks
if(D(k,1)<=T)
Rj=k;
break;
end
end
if(Rj==0)
DispV2(ind,1)=ind;
DispV2(ind,2)=T;
DispV2(ind,4)=0;
DispV2(ind,5)=0
DispV2(ind,6)=0;
T=T+1;
DispV2(ind,3)=T;
disp(T);
disp('manish');
continue;
end
minR=9999;
if(Rj>1)
for k=1:Rj-1
if(D(k,1)< minR)
minR=D(k,1);
minRI=k;
end
end
else
minR=D(1,1);
minRI=1;
end
if((((T+D(Rj,6))<=minR)&&((T+D(Rj,6))<=D(Rj,4)))||(Rj==1&&(T+D(Rj,6))<=D(Rj,4)))
DispV2(ind,1)=ind;
DispV2(ind,2)=T;
DispV2(ind,4)=D(Rj,7);
DispV2(ind,5)=D(Rj,5);
DispV2(ind,6)=10;
disp('T==');
disp(T);
disp('TasksR no');
disp(D(Rj,7));
disp('Jobno:');
disp(D(Rj,5));
T=T+D(Rj,6);
D(Rj,1)=D(Rj,1)+D(Rj,2);
D(Rj,6)=D(Rj,3);
D(Rj,4)=D(Rj,4)+D(Rj,2);
D(Rj,5)=D(Rj,5)+1;
DispV2(ind,3)=T;
flDg=0;
P=T;
elseif((T+D(Rj,6))>D(Rj,4)&& ~((T+D(Rj,6))<minR))
DispV2(ind,1)=ind;
DispV2(ind,2)=T;
DispV2(ind,4)=D(Rj,7);
DispV2(ind,5)=D(Rj,5);
DispV2(ind,6)=5;
T=D(k,4);
DispV2(ind,3)=T;
D(Rj,1)=D(Rj,1)+D(Rj,2);
D(Rj,6)=D(Rj,3);
D(Rj,4)=D(Rj,4)+D(Rj,2);
D(Rj,5)=D(Rj,5)+1;
else
disp('T==');
disp(T);
disp('TDsksRTYT no');
disp(D(Rj,7));
disp('Jobno');
disp(D(Rj,5));
DispV2(ind,1)=ind;
DispV2(ind,2)=T;
DispV2(ind,4)=D(Rj,7);
DispV2(ind,5)=D(Rj,5);
DispV2(ind,6)=2;
if(D(Rj,4)~=D(minRI,4))
D(Rj,6)=D(Rj,3)-(minR-T);
T=T+D(Rj,3)-D(Rj,6);
else
D(Rj,6)=D(Rj,3);
T=T+D(Rj,6);
D(Rj,1)=D(Rj,1)+D(Rj,2);
D(Rj,4)=D(Rj,4)+D(Rj,2);
D(Rj,5)=D(Rj,5)+1;
DispV2(ind,6)=10;
end
DispV2(ind,3)=T;
end
end
clc;
while(1)
k = menu('Select','RM','Exit');
if(k==1)
clc;
disp(' Tasks Details ');
disp(' R P E D J Er T ');
disp(E);
disp(' 0<=>IDEAL 2<=>Partial_Execution 5<=>MISS 10<=>Complete ');
disp(' RM');
disp(' ');
disp(' TIME');
disp(' S.NO FROM TO TASK JOB_NO STATUS');
disp(' ');
disp(DispV2);
disp('Press any key to continue: ');
pause;
clc;
end
if(k==2)
disp('THANKS, Sir: For your valuable time');
pause;
clc;
break;
end
end