Использование алгоритма Round Robin для расчета необходимого времени - PullRequest
0 голосов
/ 18 февраля 2011

Может быть, кто-то чувствует себя дружелюбно и считает этот тизер мозга интересным ... но я чувствую, что, может быть, я запутался.

Цель этого - вычислить, используя алгоритм циклического перебора, время, которое потребуется для завершения всех процессов. У меня есть запрос пользователя на квант времени, а затем, сколько процессов он хотел бы рассчитать. Оттуда я добавляю оператор for, основанный на том, сколько бы процессов ни присваивало время начала процесса и время пакета.

Для тех, кто не знаком, квант времени - это количество циклов, которое он обработает, прежде чем переключится на следующий, пакет - это количество циклов, необходимое для завершения этого процесса, и, конечно, время поступления - это количество циклов завершено до того, как это произойдет. Простой алгоритм, но он покажет, как работает процессор. Если бы кто-нибудь мог помочь во всем, что было бы фантастическим! Я так потерян. Я хотел сделать это на C #, но моих навыков программирования недостаточно для этого на C #.

Две проблемы, с которыми я сталкиваюсь, заключаются в моих операторах if, я начал терять себя, и по какой-то причине он выдает ошибку при компиляции с dif

import java.io.*;
import java.util.*;

public class Thread{       

    public Thread() {
        inputexecute();
    }

    public void inputexecute(){

        Scanner x = new Scanner(System.in);
        int xx = 0;

        String choice = null;
        ArrayList parrive = new ArrayList();
        ArrayList pburst = new ArrayList();

        while (true){
            System.out.println("Enter the time quantum: ");
            int quant = x.nextInt();
            System.out.println("Enter the number of processes: ");
            int pnum = x.nextInt();

            for( int i=0; i<pnum; i++)
            {
                System.out.println("Enter the arival for p"+i+": ");
                int arrive = x.nextInt();
                parrive.add(arrive);

                System.out.println("Enter the burst time: ");
                int burst = x.nextInt();
                pburst.add(burst);    


            }

            int dif;
            for(int ii=0; ii < pnum; ii++)
            {
                int asw == parrive.get[ii];

                if (asw < quant)
                {
                    dif = quant - asw;
                }                    
                if (quant < asw)
                {
                    asw = asw - quant;
                }
                if (dif > 0)
                {

                }
            }
        } /* end while*/
    } /* end exec input*/
} /* class thread */

Ответы [ 2 ]

1 голос
/ 18 февраля 2011

Ваша ошибка в том, что вы используете оператор равенства (==) вместо присваивания

                            int asw == parrive.get[ii];

должно быть

                            int asw = parrive.get[ii];
0 голосов
/ 18 февраля 2011

Как бы я это написал

List<Integer> parrive = new ArrayList<Integer>();

for(int asw: parrive) {
    int dif = Math.abs(asw - quant);
    if (dif == 0) continue;
    // if dif > 0

}

Я предполагаю

asw = asw - quant;

должно быть

dif = asw - quant;
...