Исправить некорректный перевод кода с C++ - C#
Формулировка задачи:
Необходимо переделать код с языка C++ на С#
Проблемы возникают с переделыванием циклической части(ругается на count), вследствие чего программа вычисляет неправильно:
int main()
{
setlocale(LC_ALL, "Russian");
int st[10], bt[10], wt[10], tat[10], n, tq; /* время выполнения, ожидания, выполнения, количество процессов, квант времени*/
int i, count=0, swt=0, stat=0, temp, sq=0; /* переменные для выполнения программы*/
float awt=0.0, atat=0.0; /* общее время ожидания и выполнения*/
cout<<"Введите количество процессов: ";
cin>>n; /* Введите количество процессов*/
for(i=0; i<n;i++) /* Цикл рандомно дает значения времени выпонения*/
{
int b; cin>>b;
bt[i]=b;
st[i]=bt[i];
}
cout<<"Введите квант времени: "; /* Вводим квант времени*/
cin>>tq;
while(1) /* Цикл создает очередь в котором каждый процесс будет использовать ЦПУ время определенное квантом времени*/
{
for(i=0, count=0;i<n;i++) /* Цикл для определения номера процесса*/
{
temp=tq;
if(st[i]==0) /* Если время выпонения равно нулю переходим к след. процессу*/
{
count++;
continue;
}
if(st[i]>tq) /* Если время выполнения больше кванта времени, то учитываем квант времени от времени выполнения*/
{
st[i]=st[i]-tq;
}
else
if (st[i]>=0)
{
temp=st[i];
st[i]=0;
}
sq=sq+temp; /* Время оборота*/
tat[i]=sq; /* Время ожидания*/
}
if(n==count) /* Если количество процессов закончиться, то цикл закончиться*/
break;
} /* Здесь конец цикла*/
for(i=0;i<n;i++) /* Этот цикл находит общее время ожидания и выполнения*/
{
wt[i]=tat[i]-bt[i];
swt=swt+wt[i];
stat=stat+tat[i];
}
awt=(float)swt/n;
atat=(float)stat/n;
/* Выводим полученные данные на экран консоли*/
cout<<"Процесс Время выполнения Время ожидания Время оборота";
/* Номер процесса,Время выполнения(сервиса),Время ожидания,Время оборота*/
cout<<endl;
cout<<endl;
for(i=0; i<n; i++)
{
cout<<i+1<<"\t\t"<<bt[i]<<"\t\t\t"<<wt[i]<<"\t\t"<<tat[i];
cout<<endl;
}
cout<<endl<<"Среднее время ожидания="<<awt; /*Общее время ожидания*/
cout<<endl<<"Cреднее время выполнения="<<atat<<"\n";/*Общее время выполнения*/
cin.get();
system("Pause");
return 0;} public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
dataGridView1.Columns.Add("column1", "Процесс");
dataGridView1.Columns.Add("column2", "Время выполнения");
dataGridView1.Columns.Add("column3", "Время ожидания");
dataGridView1.Columns.Add("column3", "Время оборота");
int[] st = new int[10];
int[] tat = new int[10];
int[] wt = new int[10];
int swt = 0;
int stat = 0;
int[] bt = new int[10]; //Время выполнения процесса
int n = int.Parse(textBox2.Text); //Количество процессов
int tq = int.Parse(textBox1.Text); //Квант времени
int temp=0;
int sq=0;
Random r = new Random();
for (int i = 0; i < n; i++)
{
bt[i] = r.Next(0,28);
st[i] = bt[i];
dataGridView1.Rows.Add();
dataGridView1.Rows[i].Cells[0].Value = i.ToString();
dataGridView1.Rows[i].Cells[1].Value = st[i].ToString();
}
/////////////////////////////
while(true)
{
for (int i = 0, count=0; i < n; i++) /* Цикл для определения номера процесса*/
{
temp = tq;
if(st[i]==0) /* Если время выполнения равно нулю переходим к след. процессу*/
{
count++;
continue;
}
if (st[i] > tq) /* Если время выполнения больше кванта времени, то учитываем квант времени от времени выполнения*/
{
st[i] = st[i] - tq;
}
else
if (st[i] >= 0)
{
temp = st[i];
st[i] = 0;
}
sq = sq + temp; /* Время оборота*/
tat[i] = sq; /* Время ожидания*/
}
if(n==count) /* Если количество процессов закончиться, то цикл закончиться*/
break;
for (int i = 0; i < n; i++) /* Этот цикл находит общее время ожидания и выполнения*/
{
wt[i] = tat[i] - bt[i];
swt = swt + wt[i];
stat = stat + tat[i];
}
}
}Решение задачи: «Исправить некорректный перевод кода с C++»
textual
Листинг программы
while(true)
{
for (int i = 0, count=0; i < n; i++) /* Цикл для определения номера процесса*/
{
temp = tq;
if(st[i]==0) /* Если время выполнения равно нулю переходим к след. процессу*/
{
count++;
continue;
}