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

kastelo

Elevador

Recommended Posts

kastelo

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

Share this post


Link to post
Share on other sites
vitortomaz

             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 ?

Share this post


Link to post
Share on other sites
Knitter

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?

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

×

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.