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

Sign in to follow this  
flecha2000

Ajuda em Java

Recommended Posts

flecha2000

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

Share this post


Link to post
Share on other sites
Knitter

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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.