[RESOLVIDO] Exercicio de logica

15 respostas
I

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á!

15 Respostas

igor_ks

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

I

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

igor_ks

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?

I

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.

Frantic_Avenger

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á!


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.

I

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

I

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.

S

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.

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

I

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

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

F

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.
I

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.

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; ?

I

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?

F

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.

I

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.

Muito obrigada felipe, de verdade! Me ajudou muito.

F

Sem problemas! Estamos aqui para isso =D.

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

Criado 20 de agosto de 2012
Ultima resposta 23 de ago. de 2012
Respostas 15
Participantes 5