Dúvida na lógica!

13 respostas
R

Galera seria possível algum de vocês me darem uma ajuda de como eu posso realizar o código para essas informações abaixo.?
Já tentei de varias maneiras!
Estou em uma linguagem simples ainda (While, for, do-while), (String, float, int doblue char).

Agradeço desde já!

Faça um Programa que leia o peso das pessoas que querem entrar em um elevador. A capacidade
máxima do elevador é de 15 pessoas ou 800 Kg, o que ocorrer primeiro. O programa deve ler o peso da pessoa
que deseja entrar, se a sua entrada não fizer com que seja ultrapassado qualquer um dos limites, deverá escrever:
?PODE ENTRAR?, caso contrário, ou seja, ultrapassando os limites, deverá escrever: ?NÃO PODE ENTRAR:
ELEVADOR LOTADO? e encerrar o programa, mostrando o número de pessoas transportadas e o peso total
transportado.

13 Respostas

igor_ks

Bem vindo ao fórum…

Bom, aqui nós não fazemos o exercício para os outros e sim ajudamos a pensar. (Tá…, as vezes tem as respostas prontinhas)
Temos que saber o que você fez até agora, pra podermos ajudar a partir daí. Caso você não tenha conseguido fazer nada, é melhor aprender um pouco mais, ser mais persistente e tentar um mais, afinal é quando tentamos, forçamos nossa cabeça a pensar, é que aprendemos.

R

igor_ks:
Bem vindo ao fórum…

Bom, aqui nós não fazemos o exercício para os outros e sim ajudamos a pensar. (Tá…, as vezes tem as respostas prontinhas)
Temos que saber o que você fez até agora, pra podermos ajudar a partir daí. Caso você não tenha conseguido fazer nada, é melhor aprender um pouco mais, ser mais persistente e tentar um mais, afinal é quando tentamos, forçamos nossa cabeça a pensar, é que aprendemos.

Eu sei que não responde exercícios li as regras.
Minha publicação é apenas me ajudar a desembolar a lógica!
Já esquentei tanto o juízo ao tentar hum lógica para isso e que estou achando que deve ser a lógica mais ridícula de java!
Não estou conseguindo fazer o laço para que ele informe que ainda cabe gente ou se já excedeu por limite de peso ou de gente!

Obrigado e agradeço desde já a ajuda!

igor_ks

Fique tranquilo por ter dificuldade em ter a logica de programacao, também tive dificuldades no comeco, e de coisas bem bestas, e achei que nao ia me dar bem com isso, mas depois vi que é só treino, e com o tempo sua cabeca pensa de uma forma melhor.

Bom, quanto ao exercício…
Pense nesse exemplo como se fosse uma fila para entrar no cinema por exemplo, onde você não sabe o tanto de gente que vai entrar. (Quando sabemos a quantidade, usamos o laço de repetição “for”, quando não sabemos, usamos “while”). Na fila, é atendida de pessoa em pessoa, ou seja, um de cada vez. Para entrar no cinema, a pessoa precisa do ingresso

Um algoritimo para isso seria

Inicio do laço de repeticao Se a pessoa tem o ingresso, então { Se o cinema não está lotado { Pode entrar } Senão (se estiver lotado) { Cai fora do laço, afinal não precisa mais verificar as próximas pessoas } } Senão (se não tem o ingresso) { Não pode entrar } Fim do laço de repetição

michetti

Bom vamos lá!!

Não irei postar códigos..
do{

int peso = Digite seu peso antes de entrar no elevador:
int contPessoas++ ou contPessoas = contPessoas + contPessoas;
int pesoTotal = pesoTotal + peso;
?PODE ENTRAR?
while(pesoTotal <= 500 && contPessoas <= 15);
?NÃO PODE ENTRAR: ELEVADOR LOTADO?
Numero de pessoas: contPessoas
Peso Total: pesoTotal

Aprimora o que passei que você consegue resolver.

michetti
michetti:
Bom vamos lá!! Não irei postar códigos..
faça{

int peso = Digite seu peso antes de entrar no elevador:
int contadorPessoas++ ou contadorPessoas = contadorPessoas + contadorPessoas;
int pesoTotal = pesoTotal + peso;
?PODE ENTRAR?
enquanto(pesoTotal <= 500 && contadorPessoas <= 15);
?NÃO PODE ENTRAR: ELEVADOR LOTADO?
Numero de pessoas: contPessoas
Peso Total: pesoTotal

Aprimora o que passei que você consegue resolver.

michetti
michetti:
michetti:
Bom vamos lá!! Não irei postar códigos..
faça{

int peso = Digite seu peso antes de entrar no elevador:
int contadorPessoas++// ou contadorPessoas = contadorPessoas + contadorPessoas;
int pesoTotal = pesoTotal + peso;
?PODE ENTRAR?
enquanto(pesoTotal <= 500 && contadorPessoas <= 15);
?NÃO PODE ENTRAR: ELEVADOR LOTADO?
Numero de pessoas: contPessoas
Peso Total: pesoTotal

Aprimora o que passei que você consegue resolver.

R

Vou esquentar meus neurônios aqui!
Esses exemplos me ajudaram a clarear um pouco a mente.
Vou verificar e colocar em código aqui no IDE.
Qual quer coisa voltarei aqui com mais dúvidas!

R

De acordo com as dúvidas tiradas por vocês consegui resolver…

public static void main(String [] args){
		int qntPessoa=0;
		double pesoPessoa, TotalPeso=0;
		Scanner sc = new Scanner(System.in);
				
		while (qntPessoa <= 15 || TotalPeso <= 800){
			
			System.out.print("Qual o peso: ");
			pesoPessoa = sc.nextDouble();
			qntPessoa++;
			TotalPeso += pesoPessoa;
			
			if (qntPessoa >= 15 || TotalPeso >= 800){
				System.out.println("Não pode entrar: limite esgotado!");
				return;
			}
			else {
				System.out.println("Pode entrar!");
			}
		}
	}
}
igor_ks

Good! Muito bom…

Mas tem um bug ae! está deixnado 14 e não 15, o 15º deve poder entrar também e da pra corrigir isso sem precisar fazer essas verificações duas vezes, como vc fez no while (qntPessoa <= 15 || TotalPeso <= 800) e depois dentro do while (qntPessoa >= 15 || TotalPeso >= 800)

A solução para isso, o michetti disse em seu post anterior

R

No caso em IF eu tenho que colocar:
if (qntPessoa > 15 || TotalPeso > 800)
Ai eu vou corrigir o bug né?

R
Good! Muito bom..

Mas tem um bug ae! está deixnado 14 e não 15, o 15º deve poder entrar também e da pra corrigir isso sem precisar fazer essas verificações duas vezes, como vc fez no while (qntPessoa <= 15 || TotalPeso <= 800) e depois dentro do while (qntPessoa >= 15 || TotalPeso >= 800)

A solução para isso, o michetti disse em seu post anterior

Está corrigido Igor.
Muito obrigado pelas dicas. :D

public static void main(String [] args){
		int qntPessoa=0;
		double pesoPessoa, TotalPeso=0;
		Scanner sc = new Scanner(System.in);
				
		while (qntPessoa <= 15 || TotalPeso <= 800){
			
			System.out.print("Qual o peso: ");
			pesoPessoa = sc.nextDouble();
			qntPessoa++;
			TotalPeso += pesoPessoa;
			
			if (qntPessoa > 15 || TotalPeso > 800){
				System.out.println("Não pode entrar: limite esgotado!");
				return;
			}
			else {
				System.out.println("Pode entrar!");
			}
		}
	}
}
igor_ks

Bom, na verdade não era essa solução que estava me referindo…
Repare no que o michetti disse:

faça{  

int peso = Digite seu peso antes de entrar no elevador:

int contadorPessoas++// ou contadorPessoas = contadorPessoas + contadorPessoas;

int pesoTotal = pesoTotal + peso;

?PODE ENTRAR?

enquanto(pesoTotal <= 500 && contadorPessoas <= 15);

ou seja,

do {
} while (condicao)

Essa solução que vc fez, seria uma certa gambiarra, tampar o erro com corretivo. Isso no mercado de trabalho não é bem visto :slight_smile: . Temos que fazer com as melhores práticas

R

Mais quando eu coloco na condição ali o “&&” ela só vai ser verdadeira se as duas estiverem verdadeiras, mas na questão me diz que se chegar em uma delas é para parar né verdade?
Então teria que ser no “||”, que é quando uma ou a outra for falsa o programa finalizar!

A Gambiarra é porque eu também ainda não cheguei a vê "do while.

Criado 6 de março de 2014
Ultima resposta 6 de mar. de 2014
Respostas 13
Participantes 3