Задержка на выходе

Я написал код для циклического планирования на C ++. Вывод состоит из двух частей, но есть задержка в выводе второй части. Я не могу исправить свой код, пожалуйста, кто-нибудь, помогите мне. Код выглядит следующим образом:

#include<iostream>

using namespace std;

int main()
{
int x=0,rbt[10],bt[10],wt[15],tat[10],cpu=0,n,tq,p[10],st[10],i,count=0,swt=0,stat=0,temp;
float awt=0.0,atat=0.0;

cout << "\nEnter number of processes:";
cin >> n;

for(i=1;i<=n;i++)
{
cout<<"\nEnter the processID";
cin>>p[i];
cout<<"\nEnter burst time:";
cin>>bt[i];
rbt[i]=bt[i];
}

cout << "\nEnter time quantum:";
cin >> tq;
cout << "\n ProcessId\tBurst time\tRemaining burst time\tCpu Time\n";

while(count!=n-1)
{
for(i=1;i<=n;i++)
{
if(rbt[i]==0)
{
++count;
continue;
}
else if(rbt[i]>tq)
{
st[i]=rbt[i];
rbt[i]=rbt[i]-tq;
cpu=cpu+tq;
}
else
{
st[i]=rbt[i];
temp=rbt[i];
rbt[i]=0;
cpu=cpu+temp;
}

cout << p[i] << "\t\t" << st[i] << "\t\t" << rbt[i] << "\t\t\t" << cpu << "\t\t" << endl;

if(rbt[i]==0)
{
tat[i]=cpu;
wt[i]=tat[i]-bt[i];
swt=swt+wt[i];
stat=stat+tat[i];
}
}
}

cout << "\nProcessID\tBurst time\tWaiting time\tTurn around time:\n";

for(i=1;i<=n;i++)
{
cout<<p[i]<<"\t\t"<<bt[i]<<"\t\t\t"<<wt[i]<<"\t\t\t"<<tat[i]<<endl;
}

awt = (float)swt/n;
atat = (float)stat/n;
cout << "Avg wait time is\tAvg turn around time is " << awt << "\t" << atat;

return 0;
}

-5

Решение

Я вижу, что вы новичок в Cpp. Есть много вещей, которые не так с этим фрагментом кода, но я не уверен, является ли какая-то из них проблемой, которую вы ищете.
Немногие из них:

  • Ваши таблицы статичны -> int rbt[10];
    Это означает, что вы объявляете целочисленную таблицу длиной 10 (индексы от 0 до 9).
    Если вы введете n>=10 программа выйдет из строки # 16, выйдя за пределы диапазона (p[10] не существует так, как вы бы этого хотели)
    Вы должны использовать std::vectorтогда не имеет значения, насколько высоко n будет.
  • Если вы введете n=1, Вам будет предложено ввести все переменные, пропустите цикл while и перейдите к последнему циклу for, что приводит к печати wt[1] а также tat[1], которые не инициализируются => мусор напечатан
  • Вы должны использовать для таких циклов: for (int i = 0; i < n; i++),
    Зачем? Потому что, когда Вы объявляете таблицу e.x. int tab[3] он имеет длину 3, и вы можете оперировать этими значениями: tab[0], tab[1], tab[2]
    Таким образом, для n=3 Вы получите доступ к этим точным значениям и не получите никакого мусора.
  • это (float)swt/n литье в стиле C Вы не должны использовать его в Cpp, потому что его результат может быть не совсем таким, как вы подозреваете. использование std::static_cast<float>(swt / n),

Это всего лишь верхушка айсберга. Ваш код трудно читать, и без того, чтобы Вы точно сказали, что именно он должен делать, мы не можем определить, что предназначена и что некорректный.

0

Другие решения


По вопросам рекламы [email protected]