Исправить некорректный перевод кода с 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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д