[RESOLVIDO] Exercicio de logica

Bom dia, me passaram um exercicio de logico para o final de semana. Pensei, pensei e nada…

O exercicio é o seguinte:

Um predio de 15 andares tem dois elevadores, o sindico do predio quer fazer com que sempre um dos elevadores esteja no terreo.
Um dia um elevador estava no 10 andar e outro no 9 andar. Eu preciso fazer um codigo para que o elevador que esteja mais proximo volte para o terreo.
A pessoa que me falou, disse que tem dois metodos, um simples e um mais avançado…
Se vocês puderem me ajudar, agradeceria muito.
Obrigada desde já!

Olha só amigo, aqui nós não fazemos exercicios para outros usuários…

mas uma ajuda seria fazer um if pra pegar o que está mais perto do terreo e setar o andar dele pra 0.

Codigo, vc tem q se virar

Em nenhum momento pedi para o meu exercicio ser feito, pedi ajuda.
Obrigada pela dica.

Mas se está pedindo ajuda, diga a sua dúvida. Nao apenas poste o que precisa ser feito…

Como podemos ajudar se nao soubermos qual a sua duvida?

A minha dúvida é na parte de fazer o elevador voltar, eu sei a mais importante do código… mas como estou aprendendo me atrapalho um pouco.

[quote=iisalynch]Bom dia, me passaram um exercicio de logico para o final de semana. Pensei, pensei e nada…

O exercicio é o seguinte:

Um predio de 15 andares tem dois elevadores, o sindico do predio quer fazer com que sempre um dos elevadores esteja no terreo.
Um dia um elevador estava no 10 andar e outro no 9 andar. Eu preciso fazer um codigo para que o elevador que esteja mais proximo volte para o terreo.
A pessoa que me falou, disse que tem dois metodos, um simples e um mais avançado…
Se vocês puderem me ajudar, agradeceria muito.
Obrigada desde já![/quote]
Se for ser chato mesmo de acordo com a lógica este cenário de um estar no 9º andar e outro no 10º é impossível devido a frase “…o sindico do predio quer fazer com que sempre um dos elevadores esteja no terreo.”. Fora isso é só ter um campo que indique em qual andar o elevador está e fazer um if para obter o menor valor e “jogá-lo” pro 1º andar.

O que eu quis dizer é: sempre que possivel, um dos elevadores tem que voltar para o terreo…
E obrigada pela dica.

Olá de novo, já finalizei a parte de por no papel as informações e estou aparentemente terminando meu código.
Vou postar tudo o que fiz até agora:

Anotações:

Os elevadores possuem cada um um painel onde aparecem os andares em que estão, e um botão cada.

  • Apertar Botão1
  • Apertar Botão2 (Na verdade, aperto somente um botão, mas como em todos os elevadores, os dois botões acendem)

-Chamar elevador1

-Olhar painel 1 depois olhar painel2

-Comparar andar do painel1 com andar do painel2

-Painel1 < painel2 => descer elevador1

-Painel1 > painel2 => descer elevador2

-Painel1 = painel2 => qualquer um desce

-Descer elevador escolhido com base nas comparações acima.

----x----

Esboço do código:

painel1 - int
painel2 - int

metodo void chamarElevador () {
// escrever aqui
}

SE painel1 < painel2 {
descerElevador1();
}

metodo void descerElevador1() {
painel1 = 0;
}

	int painel1;
	int painel2;

	void chamarElevador() {

		if (painel1 < painel2) {
			descerElevador1();
		}

		if (painel1 > painel2) {
			descerElevador2();
		}

		if (painel1 = painel2) {
			
		}
	}

	void descerElevador2() {
		painel2 = 0;

	}

	void descerElevador1() {
		painel1 = 0;

	}
}

Minha dúvida é a seguinte, quando faço um IF para painel1 = painel2, o eclipse apresenta erro, mas não dá sugestão.
E para descer qualquer um dos elevadores, preciso fazer random, e estou com um pouco de dúvidas como fazer isso.

[quote=iisalynch]Olá de novo, já finalizei a parte de por no papel as informações e estou aparentemente terminando meu código.
Vou postar tudo o que fiz até agora:

Anotações:

Os elevadores possuem cada um um painel onde aparecem os andares em que estão, e um botão cada.

  • Apertar Botão1
  • Apertar Botão2 (Na verdade, aperto somente um botão, mas como em todos os elevadores, os dois botões acendem)

-Chamar elevador1

-Olhar painel 1 depois olhar painel2

-Comparar andar do painel1 com andar do painel2

-Painel1 < painel2 => descer elevador1

-Painel1 > painel2 => descer elevador2

-Painel1 = painel2 => qualquer um desce

-Descer elevador escolhido com base nas comparações acima.

----x----

Esboço do código:

painel1 - int
painel2 - int

metodo void chamarElevador () {
// escrever aqui
}

SE painel1 < painel2 {
descerElevador1();
}

metodo void descerElevador1() {
painel1 = 0;
}

	int painel1;
	int painel2;

	void chamarElevador() {

		if (painel1 < painel2) {
			descerElevador1();
		}

		if (painel1 > painel2) {
			descerElevador2();
		}

		if (painel1 = painel2) {
			
		}
	}

	void descerElevador2() {
		painel2 = 0;

	}

	void descerElevador1() {
		painel1 = 0;

	}
}

Minha dúvida é a seguinte, quando faço um IF para painel1 = painel2, o eclipse apresenta erro, mas não dá sugestão.
E para descer qualquer um dos elevadores, preciso fazer random, e estou com um pouco de dúvidas como fazer isso.

[/quote]

Porque você deveria usar == (comparação) e não = (atribuição) em um if.

[quote]

Porque você deveria usar == (comparação) e não = (atribuição) em um if.[/quote]

Ok, obrigada!
E quanto ao random, você pode me ajudar?

Pra que randon? Desce sempre o mesmo! Provavelmente dando preferência ao social e não ao de serviço =D.

MAS…

Randon r = new Randon();
r.nextInt(2); // Retorna ou 0 ou 1, ai vc faz o que quiser.

[quote=felipeaps]Pra que randon? Desce sempre o mesmo! Provavelmente dando preferência ao social e não ao de serviço =D.

MAS…

Randon r = new Randon(); r.nextInt(2); // Retorna ou 0 ou 1, ai vc faz o que quiser. [/quote]

Não pensei nessa possibilidade quando tava montando ):
Mas um duvida, eu coloco 0 ou 1 no lugar do 2?
Ou faço um return 0; ?

Outra dúvida,

preciso criar um método void pro caso dos elevadores iguais? Ou quase uso o random não é preciso de um método?

Você não entendeu. Onde vc tem sua condição, verificando se os elevadores estão no mesmo andar, vc pode fazer:

if (painel1 = painel2) {  
   Randon r = new Randon();
   // Agora vc precisa verificar qual o alor retornado
   if (r.nextInt(2) == 0) {
     descerElevador1();
   } else {
     descerElevador2();
   }           
}

O r.nextInt(2) retorna um inteiro entre 0 e 2 (incluindo o 0 e excuindo o 2), ou seja, retorna 0 ou 1.
Quanto a criar um método, vc pode cri-a-lo sem problemas, mas não precisa.

[quote=felipeaps]Você não entendeu. Onde vc tem sua condição, verificando se os elevadores estão no mesmo andar, vc pode fazer:

if (painel1 = painel2) {  
   Randon r = new Randon();
   // Agora vc precisa verificar qual o alor retornado
   if (r.nextInt(2) == 0) {
     descerElevador1();
   } else {
     descerElevador2();
   }           
}

O r.nextInt(2) retorna um inteiro entre 0 e 2 (incluindo o 0 e excuindo o 2), ou seja, retorna 0 ou 1.
Quanto a criar um método, vc pode cri-a-lo sem problemas, mas não precisa.[/quote]

Muito obrigada felipe, de verdade! Me ajudou muito.

Sem problemas! Estamos aqui para isso =D.

Se resolveu, coloca [RESOLVIDO] no título pls!