Home > Back-end >  Is there a way to convert C code into C? [closed]
Is there a way to convert C code into C? [closed]

Time:09-22

My professor tasked me on finding a functional Preemptive Priority Scheduling for my class to see. I found a program but it is in C . My classmates and I have only ever tackled C, Java, HTML, and CSS. I was wondering if there was a way to make it so that the program is C so that my classmates can understand the program somewhat and experiment with the program themselves.

The code in question is found below.

#include<algorithm>
using namespace std;
struct node{
    char pname;
    int btime;
    int atime;
    int priority;
    int restime=0;
    int ctime=0;
    int wtime=0;
}a[1000],b[1000],c[1000];
void insert(int n){
    int i;
    for(i=0;i<n;i  ){
        cin>>a[i].pname;
        cin>>a[i].priority;
        cin>>a[i].atime;
        cin>>a[i].btime;
        a[i].wtime=-a[i].atime 1;
    }
}
bool btimeSort(node a,node b){
    return a.btime < b.btime; 
}
bool atimeSort(node a,node b){
    return a.atime < b.atime; 
}
bool prioritySort(node a,node b){
    return a.priority < b.priority; 
}
int k=0,f=0,r=0;
void disp(int nop,int qt){
    int n=nop,q;
    sort(a,a n,atimeSort);
    int ttime=0,i;
    int j,tArray[n];
    int alltime=0;
    bool moveLast=false;
    for(i=0;i<n;i  ){
        alltime =a[i].btime;
    }
    alltime =a[0].atime;
    for(i=0;ttime<=alltime;){
        j=i;
        while(a[j].atime<=ttime&&j!=n){
            b[r]=a[j];
            j  ;
            r  ;
        }
        if(r==f){
            c[k].pname='i';
            c[k].btime=a[j].atime-ttime;
            c[k].atime=ttime;
            ttime =c[k].btime;
            k  ;
            continue;
        }
        i=j;
        if(moveLast==true){
            sort(b f,b r,prioritySort);
            // b[r]=b[f];
            // f  ;
            // r  ;
        }
        j=f;
        if(b[j].btime>qt){
            c[k]=b[j];
            c[k].btime=qt;
            k  ;
            b[j].btime=b[j].btime-qt;
            ttime =qt;  
            moveLast=true;
            for(q=0;q<n;q  ){
                if(b[j].pname!=a[q].pname){
                    a[q].wtime =qt;
                }
            }
        }
        else{
            c[k]=b[j];
            k  ;
            f  ;
            ttime =b[j].btime;  
            moveLast=false;
            for(q=0;q<n;q  ){
                if(b[j].pname!=a[q].pname){
                    a[q].wtime =b[j].btime;
                }
            }
        }
        if(f==r&&i>=n)
        break;
    }
    tArray[i]=ttime;
    ttime =a[i].btime;
    for(i=0;i<k-1;i  ){
        if(c[i].pname==c[i 1].pname){
            c[i].btime =c[i 1].btime;
            for(j=i 1;j<k-1;j  )
                c[j]=c[j 1];
            k--;
            i--;
        }
    }
    
    int rtime=0;
    for(j=0;j<n;j  ){
        rtime=0;
        for(i=0;i<k;i  ){
            if(c[i].pname==a[j].pname){
                a[j].restime=rtime;
                break;
            }
            rtime =c[i].btime;
        }
    }
    float averageWaitingTime=0;
    float averageResponseTime=0;
    float averageTAT=0;
    
    cout<<"\nGantt Chart\n";
    rtime=0;
    for (i=0; i<k; i  ){
        if(i!=k)
            cout<<"|  "<<'P'<< c[i].pname << "   "; 
        rtime =c[i].btime;
        for(j=0;j<n;j  ){
            if(a[j].pname==c[i].pname)
                a[j].ctime=rtime;
        } 
    }
    cout<<"\n";
    rtime=0;
    for (i=0; i<k 1; i  ){
        cout << rtime << "\t";
        tArray[i]=rtime;
        rtime =c[i].btime; 
    }
    cout<<"\n";
    cout<<"\n";
    cout<<"P.Name Priority AT\tBT\tCT\tTAT\tWT\tRT\n";
    for (i=0; i<nop&&a[i].pname!='i'; i  ){
        if(a[i].pname=='\0')
            break;
        cout <<'P'<< a[i].pname << "\t"; 
        cout << a[i].priority << "\t";
        cout << a[i].atime << "\t";
        cout << a[i].btime << "\t";
        cout << a[i].ctime << "\t"; 
        cout << a[i].wtime a[i].ctime-rtime a[i].btime << "\t"; 
        averageTAT =a[i].wtime a[i].ctime-rtime a[i].btime;
        cout << a[i].wtime a[i].ctime-rtime << "\t"; 
        averageWaitingTime =a[i].wtime a[i].ctime-rtime;
        cout << a[i].restime-a[i].atime << "\t";  
        averageResponseTime =a[i].restime-a[i].atime;
        cout <<"\n"; 
    }
    cout<<"Average Response time: "<<(float)averageResponseTime/(float)n<<endl;
    cout<<"Average Waiting time: "<<(float)averageWaitingTime/(float)n<<endl;
    cout<<"Average TA time: "<<(float)averageTAT/(float)n<<endl;
}
int main(){
    int nop,choice,i,qt;
    cout<<"Enter number of processes\n";
    cin>>nop;
    cout<<"Enter process, priority, AT, BT\n";
    insert(nop);
    disp(nop,1);
    return 0;
} ```

CodePudding user response:

As far as I know, you cannot convert c into understandable c code. This link supports my answer. You can check this one out for more info on how to convert c code into c code, but as mentioned, the more complex usage of c won't be readable for humans when converted to c.

CodePudding user response:

This code uses only 3 c specific functions. You can replace it with equivalent c functions. Replace cout with printf, cin with scanf and sort with qsort.

  •  Tags:  
  • c c
  • Related