/*
- To change this license header, choose License Headers in Project Properties.
- To change this template file, choose Tools | Templates
- and open the template in the editor.
*/
package fifo;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Scanner;
/**
*
-
@author Pinkman
*/
public class Fifo {/**
-
@param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
// declaracao de variaveis
Scanner scanner = new Scanner(System.in);
int N, entrada, tempoAtual;
double tempoExecucao, tempoEspera;
ArrayList processos, ingressos, duracoes, temposFinais, temposIniciais;
int contTeste = 0;
N = scanner.nextInt();
String formato, saida;
DecimalFormat nf = new DecimalFormat(“0.00”);
-
@param args the command line arguments
while (N != 0) {
contTeste++;
// inicializacao de variaveis
processos = new ArrayList();
ingressos = new ArrayList();
duracoes = new ArrayList();
temposFinais = new ArrayList();
temposIniciais = new ArrayList();
tempoEspera = 0;
tempoExecucao = 0;
for (int i = 1; i <= N; i++) {
// adiciona processo a lista de processos
processos.add(i);
// le e adiciona ingresso no processo i
entrada = scanner.nextInt();
ingressos.add(entrada);
// le e adiciona duracao do processo i
entrada = scanner.nextInt();
duracoes.add(entrada);
}
// tempo inicial = tempo de ingresso do primeiro processo
tempoAtual = (int) ingressos.get(0);
// adicionando tempos de inicio e termino dos processos
for (int i = 0; i < N; i++) {
if (ingressos.get(i) > tempoAtual) {
tempoAtual = (int) ingressos.get(i);
}
temposIniciais.add(tempoAtual);
tempoAtual += duracoes.get(i);
temposFinais.add(tempoAtual);
}
// calculo dos tempos medios de espera e execucao
for (int i = 0; i < N; i++) {
tempoExecucao += temposFinais.get(i) - ingressos.get(i);
tempoEspera += temposIniciais.get(i) - ingressos.get(i);
}
tempoExecucao = tempoExecucao / N;
tempoEspera = tempoEspera / N;
System.out.println("Teste " + contTeste);
formato = nf.format(tempoExecucao);
saida = “Tempo medio de execucao: " + formato + “s”;
saida = saida.replace(”.", “,”);
System.out.println(saida);
formato = nf.format(tempoEspera);
saida = “Tempo medio de espera: " + formato + “s”;
saida = saida.replace(”.", “,”);
System.out.println(saida);
// ordem dos processos = em tempo de entrada
for (int i = 0; i < N; i++) {
System.out.print(“P” + processos.get(i) + " ");
}
System.out.println();
System.out.println();
N = scanner.nextInt();
}
}
}
Imagem do ERRO:
