Исправить некорректный перевод кода с C++ - C#

Узнай цену своей работы

Формулировка задачи:

Необходимо переделать код с языка C++ на С#
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;}
Проблемы возникают с переделыванием циклической части(ругается на count), вследствие чего программа вычисляет неправильно:
 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;
                }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.8 из 5