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

kastelo

Elevador

6 mensagens neste tópico

boas...

E assim estou a fazer a simulação de elevador mas estou com vários problemas...

1 - Não consigo fazer com que o elevado aceite mais de 1 pessoa e uma máximo de 4...

2 - O elevador não sobe...

import java.util.*;

public class Main {

//Gerar tempo de espera entre passageiros
static int random (int tempo_espera)
{
	tempo_espera = (int) Math.floor(Math.random()*10) + 1;
	return tempo_espera;
}

public static void main(String[] args) {
	int tempo_total = 0;
	int velocidade = 3;
	int periodo = 1;
	int contador = 0;
	int flag_erro = 0;
	int piso_elevador = 0;
	int pessoas_entraram = 0;
	int pessoas_sairam = 0;
	char passageiro = 96;
	int tempo_espera = 0;
	int flag_espera = 0;
	int multiplica_periodo = 1;
	//int unidades_tempo = 0;


	Scanner scan = new Scanner(System.in);
	//Ver se o Tempo Total é entre 60 e 86400 unidades
	do
	{
		tempo_espera = random(tempo_espera);
		System.out.println(tempo_espera);
		System.out.println("Introduza o tempo total da simulação.");
		tempo_total = scan.nextInt();
		if (tempo_total < 60 || tempo_total > 86400)
		{
			System.out.println("O tempo total não pode ser menor que 60 ou maior que 86400.");
			flag_erro = 1;
		}
		else
			flag_erro = 0;
	}
	while (flag_erro != 0);
	//Ver se a velocidade é 1,2 ou 3
	do
	{
		System.out.println("Introduza a velocidade do elevador.");
		velocidade = scan.nextInt();
		if (velocidade != 1 && velocidade != 2 && velocidade != 3)
		{
			System.out.println("A velocidade só pode ser 1,2 ou 3.");
			flag_erro = 1;
		}
		else
			flag_erro = 0;
	}
	while (flag_erro != 0);
	//Ver se o Periodo é maior que 1 e é menor que 30% do tempo total
	do
	{
		System.out.println("Introduza o periodo de visualização.");
		periodo = scan.nextInt();
		if (periodo < 1 || periodo > ((int)((tempo_total*30)/100)))
		{
			System.out.println("O periodo de visualização não pode ultrapassar 30% do tempo total e não pode ser menor que 1.");
			flag_erro = 1;
		}
		else
			flag_erro = 0;
	}
	while (flag_erro != 0);

	//Codigo Main
	do
	{
		flag_espera = 1;
		for (int x = 0; x < tempo_espera; x++)
		{
			tempo_espera = (int) Math.floor(Math.random()*10) + 1;
			if (flag_espera == 1)
			{
				if (contador == 0)
				{
					System.out.println(contador + ": " + "[E] piso_0( ), piso_1( )");
				}
				else
				{
					if (contador == (periodo * multiplica_periodo))//Mostrar de periodo a periodo
					{
						multiplica_periodo++;
						if (piso_elevador == 0)
						{
							System.out.println(contador + ": " + "[E] piso_0(" + passageiro +"), piso_1( )");
						}
						else 
						{
							System.out.println(contador + ": " + "[E] piso_0(" + passageiro +"), piso_1( )");
						}
					}
				}
				for (int k = tempo_espera; k < 1; k--) //
				{

					tempo_total--;
					if (tempo_espera == 1)
						passageiro++;
				}
				passageiro++;
				//tempo_espera = random(tempo_espera);
				if (passageiro == 123)
				{
					passageiro = 97;
				}
				contador++;
				flag_espera = 0;
			}
		}
	}
	while (contador <= tempo_total);

	System.out.println("\nEntraram:" + pessoas_entraram + "\nSairam:" + pessoas_sairam);
}

}

Elevador_v2.rar

desde já um obrigado e bom ano!

ps: estou a trabalhar em eclipse

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

             if (piso_elevador == 0)
                     {
                        System.out.println(contador + ": " + "[E] piso_0(" + passageiro +"), piso_1( )");
                     }
                     else
                     {
                        System.out.println(contador + ": " + "[E] piso_0(" + passageiro +"), piso_1( )");
                     }

é suposto este if else ter mensagens iguais ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

lol... nao isso fui eu que adicionei a pensar que isso ia fazer alguma coisa!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem, o teu código é um pouco confuso, e essa mania de usar Java como se fosse C, ou pior....

Onde exactamente é que estás a ter problemas? Já fizeste um debug para ver a sequência de código que está a ser executada?

Porque é que o passageiro é um char? E como é que seria esperado ver mais passageiros? Estás a somar o char várias vezes, isso não é acrescentar passageiros?

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