Dúvida na lógica!

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

[quote]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.[/quote]

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.

[quote=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.[/quote]

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!

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

Bom vamos lá!!

Não irei postar códigos…

[code]
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[/code]

Aprimora o que passei que você consegue resolver.

[quote=michetti]Bom vamos lá!!

Não irei postar códigos…

[code]
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[/code]

Aprimora o que passei que você consegue resolver.[/quote]

[quote=michetti][quote=michetti]Bom vamos lá!!

Não irei postar códigos…

[code]
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[/code]

Aprimora o que passei que você consegue resolver.[/quote][/quote]

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!

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!");
			}
		}
	}
}

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

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

[quote]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[/quote]

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

[code]
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!");
		}
	}
}

}[/code]

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

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.