• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

flecha2000

Ajuda em Java

2 mensagens neste tópico

Boa noite amigos, tenho um trabalho pra fazer, mas estou à nora, não sei porque ponta eide começar.

O trabalho em questão é o que a seguir envio.

Isto tem que ser feito em JAVA

Trabalho prático: Simulador de um elevador

1. Introdução

Tem como objectivo o desenvolvimento de um programa que represente um sistema de simulação

onde se pode observar a evolução do comportamento de um elevador num edifício.

2. Descrição do trabalho

De seguida apresentam-se os tópicos fundamentais a considerar no desenvolvimento:

A simulação é realizada para um único elevador que tem capacidade máxima de 4 passageiros e

encontra-se a funcionar num edifício com apenas 1 piso. O elevador nunca tem avarias.

Pode considerar que o tempo de simulação não corresponde ao tempo real. A unidade mínima de

tempo que deve considerar para todos os cálculos é o segundo. O elevador tem por defeito uma

velocidade de deslocação de 1 piso por 3 unidades de tempo, sendo o tempo médio que um

passageiro demora a entrar ou a sair do elevador igual a 1 unidade de tempo.

O elevador apenas aceita passageiros no piso zero e desloca-os para o piso um. Enquanto o

elevador está no piso zero, os passageiros podem entrar, desde que não ultrapassem a capacidade

máxima. O elevador desloca-se do piso zero para o piso um sempre que não haja mais passageiros

em espera numa unidade de tempo ou caso tenha sido atingida a capacidade máxima. O elevador

desloca-se do piso um para o piso zero depois de todos os passageiros sairem e caso haja pelo

menos um passageiro em espera no piso zero. Caso não haja passageiros em espera, o elevador não

se desloca em qualquer dos sentidos.

O tempo que separa dois passageiros que aguardam pelo elevador é gerado aleatoriamente: Em

cada unidade de tempo da simulação a fila de espera de passageiros no piso zero muda, podendo ou

não entrar um novo passageiro.

O programa deve mostrar no início (momento 0) o elevador representado por [E] no piso zero, sem

ocupates ou fila de espera.

0: [E] piso_0( ), piso_1( )

Os passageiros estão representados com letras minúsculas. O primeiro passageiro será representado

pela letra a, o segundo pela letra b, o terceiro pela letra c, etc.... Quando chega à letra z o programa

recomeça a usar a letra a.

Os passageiros dentro do elevador encontram-se entre ( ), ex: (nop)q representa os passageiros n, o

e p dentro do elevador e q fora do elevador. No piso zero são representados todos os passageiros

em fila de espera ou dentro do elevador, no piso um apenas são representados os passageiros dentro

do elevador e o ultimo passageiro que saiu.

A simulação termina ao fim de m unidades de tempo. Deve então iniciar a simulação, apresentando

uma cadeia de caracteres para cada d unidades de tempo, por exemplo:

Parâmetros de entrada:

Tempo total de simulacao (m)? : 100

Velocidade do elevador (n)? : 3

Periodo de visualizacao (d)? : 1

Saída do programa:

0: [E] piso_0( ), piso_1( )

1: [E] piso_0( )a, piso_1( )

2: [E] piso_0(a), piso_1( )

3: piso_0( ),[E] piso_1(a)

4: piso_0( ),[E] piso_1(a)

5: piso_0( ),[E] piso_1(a)

6: piso_0( )b,[E] piso_1( )a

7: [E] piso_0( )bc, piso_1( )

8: [E] piso_0( )bc, piso_1( )

9: [E] piso_0( )bc, piso_1( )

10: [E] piso_0(b)c, piso_1( )

11: [E] piso_0(bc), piso_1( )

12: piso_0( )d, [E] piso_1(bc)

13: piso_0( )d, [E] piso_1(bc)

14: piso_0( )d, [E] piso_1(bc)

15: piso_0( )de, [E] piso_1(b)c

16: piso_0( )de, [E] piso_1( )b

17: [E] piso_0( )def, piso_1( )

18: [E] piso_0( )def, piso_1( )

19: [E] piso_0( )def, piso_1( )

20: [E] piso_0(d)ef, piso_1( )

21: [E] piso_0(de)fg, piso_1( )

22: [E] piso_0(def)gh, piso_1( )

23: [E] piso_0(defg)h, piso_1( )

24: piso_0( )h, [E] piso_1(defg)

25: piso_0( )h, [E] piso_1(defg)

26: piso_0( )h, [E] piso_1(defg)

27: piso_0( )h, [E] piso_1(def)g

28: piso_0( )h, [E] piso_1(de)f

29: piso_0( )h, [E] piso_1(d)e

30: piso_0( )hi, [E] piso_1( )d

31: [E] piso_0( )hi, piso_1( )

32: [E] piso_0( )hi, piso_1( )

33: [E] piso_0( )hi, piso_1( )

34: [E] piso_0(h)i, piso_1( )

35: [E] piso_0(hi), piso_1( )

36: piso_0( ),[E] piso_1(hi)

37: piso_0( ),[E] piso_1(hi)

38: piso_0( ),[E] piso_1(hi)

39: piso_0( ),[E] piso_1(h)i

40: piso_0( ),[E] piso_1( )h

41: piso_0( ),[E] piso_1( )

42: piso_0( ),[E] piso_1( )

43: piso_0( )j,[E] piso_1( )

44: [E] piso_0( )jk, piso_1( )

45: [E] piso_0( )jk, piso_1( )

46: [E] piso_0( )jk, piso_1( )

47: [E] piso_0(j)kl, piso_1( )

48: [E] piso_0(jk)l, piso_1( )

49: [E] piso_0(jkl)m, piso_1( )

50: [E] piso_0(jklm), piso_1( )

51: piso_0( ),[E] piso_1(jklm)

52: piso_0( ),[E] piso_1(jklm)

53: piso_0( ),[E] piso_1(jklm)

54: piso_0( )n, [E] piso_1(jkl)m

55: piso_0( )no, [E] piso_1(jk)l

56: piso_0( )no, [E] piso_1(j)k

57: piso_0( )nop, [E] piso_1( )j

58: [E] piso_0( )nop, piso_1( )

59: [E] piso_0( )nop, piso_1( )

60: [E] piso_0( )nop, piso_1( )

61: [E] piso_0(n)op, piso_1( )

62: [E] piso_0(no)p, piso_1( )

63: [E] piso_0(nop), piso_1( )

64: [E] piso_0(nop)q, piso_1( )

65: [E] piso_0(nopq), piso_1( )

66: piso_0( ), [E] piso_1(nopq)

67: piso_0( ), [E] piso_1(nopq)

68: piso_0( ), [E] piso_1(nopq)

69: piso_0( ), [E] piso_1(nop)q

70: piso_0( ), [E] piso_1(no)p

71: piso_0( ), [E] piso_1(n)o

72: piso_0( ), [E] piso_1( )n

73: piso_0( ), [E] piso_1( )

74: piso_0( )r, [E] piso_1( )

75: [E] piso_0( )r, piso_1( )

76: [E] piso_0( )rs, piso_1( )

77: [E] piso_0( )rs, piso_1( )

78: [E] piso_0®s, piso_1( )

79: [E] piso_0(rs)t, piso_1( )

80: [E] piso_0(rst)u, piso_1( )

81: [E] piso_0(rstu), piso_1( )

82: piso_0( ), [E] piso_1(rstu)

83: piso_0( )v, [E] piso_1(rstu)

84: piso_0( )v, [E] piso_1(rstu)

85: piso_0( )v, [E] piso_1(rst)u

86: piso_0( )vx, [E] piso_1(rs)t

87: piso_0( )vx, [E] piso_1®s

88: piso_0( )vx, [E] piso_1( )r

89: [E] piso_0( )vx, piso_1( )

90: [E] piso_0( )vxy, piso_1( )

91: [E] piso_0( )vxyz, piso_1( )

92: [E] piso_0(v)xyz, piso_1( )

93: [E] piso_0(vx)yz, piso_1( )

94: [E] piso_0(vxy)za, piso_1( )

95: [E] piso_0(vxyz)a, piso_1( )

96: piso_0( )a, [E] piso_1(vxyz)

97: piso_0( )ab, [E] piso_1(vxyz)

98: piso_0( )ab, [E] piso_1(vxyz)

99: piso_0( )ab, [E] piso_1(vxy)z

100: piso_0( )abc, [E] piso_1(vx)y

Entraram:28

Sairam:23

A única entrada do programa são os parâmetros da simulação. Cada valor (do tipo inteiro) tem a

seguinte ordem :

1. A duração da simulação (m )

2. A velocidade do elevador (n)

3. O período com o qual o estado do elevador é mostrado no ecrã (d)

A saída, para além do estado da fila a cada d unidades de tempo, deve ser concluída com

estatísticas sobre o número de passageiros que entrou na fila e o numero de passageiros que saiu do

elevador.

Veja outro exemplo de utilização do programa:

Parâmetros de entrada:

Tempo total de simulacao (m)? : 300

Velocidade do elevador (n)? : 2

Periodo de visualizacao (d)? : 10

Saída do programa:

0: [E] piso_0( ), piso_1( )

10: [E] piso_0©d, piso_1( )

20: [E] piso_0( )fg, piso_1( )

30: piso_0( )ij, [E] piso_1( )

40: piso_0( ),[E] piso_1( )k

50: [E] piso_0(lm), piso_1( )

60: [E] piso_0( )p, piso_1( )

70: piso_0( ), [E] piso_1( )r

80: [E] piso_0(st)u, piso_1( )

90: [E] piso_0( )y, piso_1( )

100: piso_0( )ab, [E] piso_1( )

110: [E] piso_0©, piso_1( )

120: [E] piso_0(d)ef, piso_1( )

130: piso_0( )hi, [E] piso_1( )d

140: piso_0( ),[E] piso_1( )h

150: [E] piso_0(klm), piso_1( )

160: [E] piso_0( )opq, piso_1( )

170: piso_0( ), [E] piso_1(o)p

180: piso_0( ),[E] piso_1(u)v

190: [E] piso_0(yz), piso_1( )

200: [E] piso_0( )a, piso_1( )

210: piso_0( ), [E] piso_1(ab)c

220: piso_0(d)e, [E] piso_1( )

230: [E] piso_0( )fg, piso_1( )

240: [E] piso_0(hi)jk, piso_1( )

250: piso_0( ), [E] piso_1( )h

260: piso_0( ),[E] piso_1( )

270: [E] piso_0(lm), piso_1( )

280: [E] piso_0(pq)r, piso_1( )

290: [E] piso_0(vx), piso_1( )

300: piso_0( )ab, [E] piso_1( )

Entraram:77

Sairam:75

O tempo mínimo de simulação é de 60 unidades de tempo e o máximo, 86400 unidades. O tempo

mínimo de visualização é de 1 unidade de tempo e o máximo não pode ultrapassar 30% do tempo

total de simulação. A velocidade do elevador deve ter por defeito o valor de 3 unidades de tempo,

pode no entanto atribuir-se o valor 1 ou 2 como parâmetro de entrada.

Variável Aleatória

Nesta simulação o tempo que separa dois passageiros é modelizado por uma variável aleatória.

Uma variável aleatória segue uma lei estatística (função de densidade de probabilidade) que define

que valores a variável pode tomar em média e com que probabilidade.

Por exemplo, ao tempo t = ( ) um número aleatório é gerado: 3. Um passageiro é então

acrescentado à fila de espera. O número representa o tempo que vai separar o passageiro que

acabou de entrar na fila e o próximo passageiro. Portanto, durante as próximas 3 unidades de

tempo, nenhum passageiro será acrescentado à fila.

Como gerar os valores da variável aleatória ?

A classe Random permite criar geradores de números aleatórios uniformes. O objectivo da

simulação é acrescentar em média um passageiro em cada 10 segundos (queremos apenas números

inteiros). Os tempos entre passageiros podem ser gerados com a instrução :

t = (int) Math.floor(Math.random()*10) + 1;

3. Testes

De modo a verificar o correcto funcionamento do código desenvolvido, deve utilizar os seguintes

parâmetros de entrada para execução do programa:

Teste 1:

Tempo total de simulacao (m)? : 60

Velocidade do elevador (n)? : 3

Periodo de visualizacao (d)? : 1

Teste 2:

Tempo total de simulacao (m)? : 300

Velocidade do elevador (n)? : 2

Periodo de visualizacao (d)? : 10

Teste 3:

Tempo total de simulacao (m)? : 3600

Velocidade do elevador (n)? : 3

Periodo de visualizacao (d)? : 120

4. Relatório

Além do software desenvolvido deverá ainda escrever um relatório do trabalho prático. O relatório

deverá ter as seguintes secções:

•Introdução

•Arquitectura da aplicação

•Fluxograma

•Descrição dos testes efectuados à aplicação

Obrigado

flecha2000

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Embora eu até gostasse de ajudar, isto não passa de um "despejar" do que tens no enunciado, não é uma dúvida nem demonstra qualquer esforço da tua parte em perceber o que é pretendido.

Coloca dúvidas sobre o trabalho e não o trabalho, ninguém vai fazer a avaliação por ti.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora