Java - CICLO CON ARREGLO QUE SE DETENGA HASTA QUE TODOS SUS ELEMENTOS DEL ARREGLO SEAN 0

 
Vista:

CICLO CON ARREGLO QUE SE DETENGA HASTA QUE TODOS SUS ELEMENTOS DEL ARREGLO SEAN 0

Publicado por Birdy (1 intervención) el 07/11/2021 21:47:51
Hola. Tengo que hacer un algoritmo Round Robin para un programa, y estoy tratando de hacer por mi cuenta el algoritmo, pero no encuentro la manera en que se repita el ciclo for hasta que haya tomado en cuenta todos los números del arreglo. Pensé hacerlo como está mi código, en irle restando la cantidad del quantum al arreglo para que se volvieran ceros y que el ciclo for se detuviera hasta que todos los elementos del arreglo fueran cero, pero no me funciona la sentencia y se detiene. Abajo les dejó mi código. Le agradezco a quien se tome el tiempo de ayudarme.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import java.util.Scanner;
import java.util.Arrays;
 
public class algoPruebaRR{
    public static void main(String arg[]){
        String respuesta, nomProceso;
 
        int numProcesos, opcion, cRafaga, rafaga, rafagaUno, quantum;
        String nombreProceso[];
        int rafagas[];
        int prioridad[];
        int llegada[];
        int menorAMayorRafaga[];
        Scanner sc = new Scanner(System.in);
 
        do{
            System.out.println("PROGRAMA PARA SIMULAR ALGORITMOS DE PROCESOS");
            System.out.println("¿Cuantos procesos son?");
            numProcesos = sc.nextInt();
 
            nombreProceso = new String[numProcesos];
            rafagas = new int[numProcesos];
            llegada = new int[numProcesos];
            prioridad = new int[numProcesos];
            menorAMayorRafaga = new int[numProcesos];
 
            for(int i = 0; i < numProcesos; i++){
                System.out.println("Ingresa el nombre del proceso, de acuerdo a su orden de llegada");
                nombreProceso[i] = sc.next();
                System.out.println("Ingresa su ráfaga de CPU");
                rafagas[i]=sc.nextInt();
                //menorAMayorRafaga[i] = sc.nextInt();
                System.out.println("Ingresa su tiempo de llegada");
                llegada[i] = sc.nextInt();
            }
 
            System.out.println("MENÚ DE PROCESOS");
            System.out.println("1. FIFO");
            System.out.println("2. SJF");
            System.out.println("3. Round Robin");
            System.out.println("4. Queves multi-nivel");
            System.out.println("5. Multi-nivel feedback");
            opcion = sc.nextInt();
 
            if (opcion == 3){
                System.out.println("Ingresa el quantum");
                quantum = sc.nextInt();
                cRafaga = 0;
 
 
                    for(int i = 0; i<rafagas.length; i++){
                        do{
                            rafaga = rafagas[i];
                            nomProceso = nombreProceso[i];
 
 
                            if (rafaga >= quantum){
                                System.out.print("PROCESO: " + nomProceso);
                                System.out.print(cRafaga);
                                cRafaga = cRafaga + quantum;
                                System.out.print("-" + cRafaga);
                                System.out.println();
                                rafagas[i]=rafagas[i]-quantum;
                            }
 
                            if(rafaga < quantum){
                                System.out.print("PROCESO: " + nomProceso);
                                System.out.print(cRafaga);
                                cRafaga = cRafaga + rafaga;
                                System.out.print("-" + cRafaga);
                                System.out.println();
                                rafagas[i]=rafagas[i]-rafaga;
                            }
                        }while(rafagas.length==0);
 
 
 
 
                    }
                    System.out.println(Arrays.toString(rafagas));
 
 
 
 
            }
 
 
 
        System.out.println("Quieres hacer otra operaci�n (Si/No)?: ");
            respuesta = sc.next();
            respuesta = respuesta.toLowerCase();
        }while(respuesta.equals("si"));
    }
}

Esto es lo que manda a desplegar:

¿Cuantos procesos son?
6
Ingresa el nombre del proceso, de acuerdo a su orden de llegada
corel
Ingresa su ráfaga de CPU
29
Ingresa su tiempo de llegada
0
Ingresa el nombre del proceso, de acuerdo a su orden de llegada
calcu
Ingresa su ráfaga de CPU
10
Ingresa su tiempo de llegada
1
Ingresa el nombre del proceso, de acuerdo a su orden de llegada
powerpoint
Ingresa su ráfaga de CPU
9
Ingresa su tiempo de llegada
2
Ingresa el nombre del proceso, de acuerdo a su orden de llegada
excel
Ingresa su ráfaga de CPU
11
Ingresa su tiempo de llegada
3
Ingresa el nombre del proceso, de acuerdo a su orden de llegada
chrome
Ingresa su ráfaga de CPU
6
Ingresa su tiempo de llegada
4
Ingresa el nombre del proceso, de acuerdo a su orden de llegada
word
Ingresa su ráfaga de CPU
8
Ingresa su tiempo de llegada
5
MENÃ? DE PROCESOS
1. FIFO
2. SJF
3. Round Robin
4. Queves multi-nivel
5. Multi-nivel feedback
3
Ingresa el quantum
10
PROCESO: corel0-10
PROCESO: calcu10-20
PROCESO: powerpoint20-29
PROCESO: excel29-39
PROCESO: chrome39-45
PROCESO: word45-53
[19, 0, 0, 1, 0, 0]
Quieres hacer otra operaci�n (Si/No)?:
no
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder