Problema com Lógica

38 respostas
P

to tentando resolve este exercicio:
Foi feita uma pesquisa entre os habitantes de uma região. Foram coletados os dados de idade,
sexo (M/F) e salário. Faça um programa que calcule e mostre:
- a média dos salários do grupo;
- a maior e a menor idade do grupo;
- a quantidade de mulheres com salário até R$ 200,00;
- a idade e o sexo da pessoa que possui o menor salário.

Finalize a entrada de dados ao ser digitada uma idade negativa.

o meu problema ta em pegar o menor valor digitado, porque ele pede pra finaliza a entrada de dados ao ser digitado uma idade negativa dai a negativa é sempre a menor.
eu só posso usar oq eu aprendi ate agora na faculdade só o básico if,else,while,for... eu tva pesquisando como fazer e só achei como resolver usando vetor mais nao posso usar isso ainda. alguem ai sabe como posso resolver isso? :cry:

import java.util.Scanner;
	public class repeticaoex1 {
		public static void main (String args[]){
			Scanner e = new Scanner (System.in);
			char sexo,sexo2=0;
			int idade=0,salario=0,media=0,soma=0,salario2=0,
			maior=idade,menor=idade,soma2=0,idade2=0,i;
			
			while (idade >= 0)
			{System.out.print ("Digite a idade: ");
			idade = e.nextInt();
			System.out.print ("Digite o Salário: ");
			salario = e.nextInt();
			System.out.print ("Digite o sexo (M) ou (F): ");
			sexo = e.next().charAt(0);
			soma = soma+1;
			salario2 = salario2+salario;
			if (idade > maior)
    		{maior = idade;
    		}
    		{if (idade < menor)
    		{menor = idade;
    		}
    		}
    		if (salario <= 200 && sexo == 'F')
    		{soma2 = soma2+1;
    		}
    		if (salario < menor)
    		{idade2 = idade;
    		}		
    		{sexo2 = sexo;
    		}	
			}
			media = salario2/soma;
			System.out.println ("A Média do salário é de R$: "+media);
			System.out.println ("A maior idade é: "+maior);
     		System.out.println ("A menor idade é: "+menor);
     		System.out.println ("Quantidade de mulheres com salário até R$ 200: "+soma2);
     		System.out.println ("Idade e sexo da pessoa com o menor salário: "+idade2+" Anos, Sexo "+sexo2);
}	
}

38 Respostas

drsmachado

1 - Não leia as informações do console com o nextInt(). Prefira o nextLine(), embora seja necessário converter para Int, você terá certeza de não ler “lixo”.
2 - O problema é causado por estar usando o nextInt(), trocando por nextLine deve resolver.

P

tbm nao deu nao :confused:
apareceu este erro: .java:11: error: incompatible types
idade = e.nextLine();
^
required: int
found: String

.java:13: error: incompatible types
salario = e.nextLine();
^
required: int
found: String
2 errors

Process completed.

Digite a idade: 30

Digite o Salário: 150

Digite o sexo (M) ou (F): Exception in thread main java.lang.StringIndexOutOfBoundsException: String index out of range: 0

at java.lang.String.charAt(String.java:695)

at repeticaoex1.main(repeticaoex1.java:15)

Process completed.

drsmachado

Ps1c0tIcO:
tbm nao deu nao :confused:
apareceu este erro: .java:11: error: incompatible types
idade = e.nextLine();
^
required: int
found: String

.java:13: error: incompatible types
salario = e.nextLine();
^
required: int
found: String
2 errors

Process completed.

Digite a idade: 30

Digite o Salário: 150

Digite o sexo (M) ou (F): Exception in thread main java.lang.StringIndexOutOfBoundsException: String index out of range: 0

at java.lang.String.charAt(String.java:695)

at repeticaoex1.main(repeticaoex1.java:15)

Process completed.


Leu a parte do “embora seja necessário converter para Int”?
Pois bem

idade = Integer.parseInt(e.nextLine());

P

desculpa ainda sou iniciante nao estudei isto ainda
nao sei se é ai que deveria colocar mais eu coloquei ai e deu outro erro:

{System.out.print ("Digite a idade: "); idade = Integer.parseInt(e.nextLine());

Digite a idade: 30

Digite o Salário: 2000

Digite o sexo (M) ou (F): F

Digite a idade: Exception in thread main java.lang.NumberFormatException: For input string: “”

at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)

at java.lang.Integer.parseInt(Integer.java:504)

at java.lang.Integer.parseInt(Integer.java:527)

at repeticaoex1.main(repeticaoex1.java:11)

Process completed.

nel

Ps1c0tIcO:
desculpa ainda sou iniciante nao estudei isto ainda
nao sei se é ai que deveria colocar mais eu coloquei ai e deu outro erro:

{System.out.print ("Digite a idade: "); idade = Integer.parseInt(e.nextLine());

Digite a idade: 30

Digite o Salário: 2000

Digite o sexo (M) ou (F): F

Digite a idade: Exception in thread main java.lang.NumberFormatException: For input string: “”

at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)

at java.lang.Integer.parseInt(Integer.java:504)

at java.lang.Integer.parseInt(Integer.java:527)

at repeticaoex1.main(repeticaoex1.java:11)

Process completed.

É que ele não encontrou nada no digitado, você realmente digitou ?
Ele tentou converter uma String vazia para um Integer, por isso a exceção.

P

digitei sim Oo
to desde ontem tentando resolve esse exercicio lol esse é só o 1º ainda kkk

nel

Ps1c0tIcO:
digitei sim Oo
to desde ontem tentando resolve esse exercicio lol esse é só o 1º ainda kkk

É difícil termos um bom rendimento quando estamos aprendendo algo, a não ser que tenhamos experiência em algo próximo.
Conheço pouco de leitura via teclado, usando a classe Scanner. A nível de curiosidade, troque o System.out.print por System.out.println. Se tu realmente está digitando o número e obviamente, dando ‘enter’, era para o nextLine ter o valor correto armazenado.

drsmachado

Dê uma lida.

import java.util.Scanner;  
public class repeticaoex1 {  
	public static void main (String args[]){  
		Scanner e = new Scanner (System.in);  
		char sexo,sexo2=0;  
		int idade=0,salario=0,media=0,soma=0,salario2=0,  
		maior=idade,menor=idade,soma2=0,idade2=0,i;  

		while (idade >= 0){
			System.out.print ("Digite a idade: ");  
			idade = e.nextInt();//Aqui você pode substituir e.nextInt(); por Integer.parseInt(e.nextLine());  
			System.out.print ("Digite o Salário: ");  
			salario = e.nextInt();  
			System.out.print ("Digite o sexo (M) ou (F): ");  
			sexo = e.next().charAt(0);//Aqui você pode substituir e.next(); por e.nextLine();  
			soma = soma+1; //aqui pode substituir por soma++;
			salario2 = salario2+salario;  
			if (idade > maior){
				maior = idade;  
			}{//O que essa chave faz aqui?
				if (idade < menor){
					menor = idade;  
				}  
			}//o que essa chave faz aqui?  
			if (salario <= 200 && sexo == 'F'){
				soma2 = soma2+1;  
			}  
			if (salario < menor){
				idade2 = idade;  
			}{//o que essa chave faz aqui?
				sexo2 = sexo;  
			}//o que essa chave faz aqui?
		}  
		media = salario2/soma;  
		System.out.println ("A Média do salário é de R$: "+media);  
		System.out.println ("A maior idade é: "+maior);  
		System.out.println ("A menor idade é: "+menor);  
		System.out.println ("Quantidade de mulheres com salário até R$ 200: "+soma2);  
		System.out.println ("Idade e sexo da pessoa com o menor salário: "+idade2+" Anos, Sexo "+sexo2);  
	}     
}

Identar adequadamente o código é fundamental para o bom desenvolvimento.

P

troquei e tambem nao deu certo :cry:
sim eu digito como ta ai em baixo e aperto enter
qdo eu digito a primeira vez a idade vai normal
mais depois de digitar o sexo e apertar enter ja aparece o erro
olha ai oq digitei:

Digite a idade:

20

Digite o Salário:

2000

Digite o sexo (M) ou (F):

F

Digite a idade:

Exception in thread main java.lang.NumberFormatException: For input string: “”

at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)

at java.lang.Integer.parseInt(Integer.java:504)

at java.lang.Integer.parseInt(Integer.java:527)

at repeticaoex1.main(repeticaoex1.java:11)

Process completed.

nao tem como pegar o 2º menor valor digitado? pq o primeiro vai ser sempre um numero negativo, entao eu precisava do 2º menor valor só q nao tenho ideia de como fazer isso

nel

1 - Tira o laço de repetição e verifique o resultado

2 - Leia com atenção o que o machado postou

P

modifiquei ele como o machado falou e mais ainda ta com erro

import java.util.Scanner;    
public class repeticaoex1 {    
    public static void main (String args[]){    
        Scanner e = new Scanner (System.in);    
        char sexo,sexo2=0;    
        int idade=0,salario=0,media=0,soma=0,salario2=0,    
        maior=idade,menor=idade,soma2=0,idade2=0,i;    
  
        while (idade >= 0){  
            System.out.print ("Digite a idade: ");    
            idade = Integer.parseInt(e.nextLine());//qdo faço a substituição por Integer.parseInt(e.nextLine()); da erro: 
            //Exception in thread "main" java.lang.NumberFormatException: For input string: "" 
            System.out.print ("Digite o Salário: ");    
            salario = e.nextInt();    
            System.out.print ("Digite o sexo (M) ou (F): ");    
            sexo = e.nextLine().charAt(0);//Aqui ao substituir e.next(); por e.nextLine(); da este erro:
            //Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0    
            soma++; 
            salario2 = salario2+salario;    
            if (idade > maior){  
                maior = idade;    
            }
                if (idade < menor){  
                    menor = idade;    
                }    
            
            if (salario <= 200 && sexo == 'F'){  
                soma2 = soma2+1;    
            }    
            if (salario < menor){  
                idade2 = idade;    
            } 
                sexo2 = sexo;    
             
        }    
        media = salario2/soma;    
        System.out.println ("A Média do salário é de R$: "+media);    
        System.out.println ("A maior idade é: "+maior);    
        System.out.println ("A menor idade é: "+menor);    
        System.out.println ("Quantidade de mulheres com salário até R$ 200: "+soma2);    
        System.out.println ("Idade e sexo da pessoa com o menor salário: "+idade2+" Anos, Sexo "+sexo2);    
    }       
}

Digite a idade: 20
Digite o Salário: 500
Digite o sexo (M) ou (F): Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(String.java:695)
at repeticaoex1.main(repeticaoex1.java:16)

Process completed.

drsmachado

Camarada, quando eu disse troque e.nextInt() por Integer.parseInt(e.nextLine() me referi a todos os locais onde esse código está…

P

troquei todos e.nextInt() por Integer.parseInt(e.nextLine());
tambem da o mesmo erro :confused:

drsmachado

Se o código é o mesmo que postou ai anteriormente, você não trocou todos.
Eu acabei de fazer isso aqui, com este último código (repare na linha 14).
O nextInt “atropela” as instruções, fazendo com que você tenha o problema que está tendo com o nullpointerexception.

P

agora funciono mais ta mostrando a menor idade como -1 ainda

Digite a idade: 20
Digite o Salário: 200
Digite o sexo (M) ou (F): F
Digite a idade: -1
Digite o Salário: 200
Digite o sexo (M) ou (F): M
A Média do salário é de R$: 200
A maior idade é: 20
A menor idade é: -1
Quantidade de mulheres com salário até R$ 200: 1
Idade e sexo da pessoa com o menor salário: 0 Anos, Sexo M

Process completed.

S

Ps1c0tIcO:
agora funciono mais ta mostrando a menor idade como -1 ainda

Digite a idade: 20
Digite o Salário: 200
Digite o sexo (M) ou (F): F
Digite a idade: -1
Digite o Salário: 200
Digite o sexo (M) ou (F): M
A Média do salário é de R$: 200
A maior idade é: 20
A menor idade é: -1
Quantidade de mulheres com salário até R$ 200: 1
Idade e sexo da pessoa com o menor salário: 0 Anos, Sexo M

Process completed.

Poste o codigo.

P
import java.util.Scanner;      
public class repeticaoex1 {      
    public static void main (String args[]){      
        Scanner e = new Scanner (System.in);      
        char sexo,sexo2=0;      
        int idade=0,salario=0,media=0,soma=0,salario2=0,      
        maior=idade,menor=idade,soma2=0,idade2=0,i;      
    
        while (idade >= 0){    
            System.out.print ("Digite a idade: ");      
            idade = Integer.parseInt(e.nextLine());
            System.out.print ("Digite o Salário: ");      
            salario = Integer.parseInt(e.nextLine());    
            System.out.print ("Digite o sexo (M) ou (F): ");      
            sexo = e.nextLine().charAt(0);     
            soma++;   
            salario2 = salario2+salario;      
            if (idade > maior){    
                maior = idade;      
            }  
                if (idade < menor){    
                    menor = idade;      
                }      
              
            if (salario <= 200 && sexo == 'F'){    
                soma2++;      
            }      
            if (salario < menor){    
                idade2 = idade;      
            }   
                sexo2 = sexo;      
               
        }      
        media = salario2/soma;      
        System.out.println ("A Média do salário é de R$: "+media);      
        System.out.println ("A maior idade é: "+maior);      
        System.out.println ("A menor idade é: "+menor);      
        System.out.println ("Quantidade de mulheres com salário até R$ 200: "+soma2);      
        System.out.println ("Idade e sexo da pessoa com o menor salário: "+idade2+" Anos, Sexo "+sexo2);      
    }         
}
nel

Então, por favor, poste o seu código atual para verificarmos a sua lógica.

S

Não prestei muita atenção mas pelo o que eu entendi a unica forma de sair do while é se a idade for menor que 0. Por isso a menor idade sempre será negativa.

P

sim esse é que é o problema
tenho que mostrar a maior e a menor idade do grupo e
Finalizar a entrada de dados ao ser digitada uma idade negativa.
não tem como pegar o segundo menor valor?

drsmachado

Agora você precisa arrumar a lógica das verificações.
Não apenas a questão da idade está errada, ele não mostra a idade da pessoa com maior salário.

Veja bem, quando eu preciso nivelar por baixo, sempre instancio a variável que será objeto da comparação com um valor bem alto e, quando preciso nivelar por alto, faço o inverso.

S

Ps1c0tIcO:
sim esse é que é o problema
tenho que mostrar a maior e a menor idade do grupo e
Finalizar a entrada de dados ao ser digitada uma idade negativa.
não tem como pegar o segundo menor valor?

Ja pensou em usar um for mas antes você pergunta para o usuario o tamanho do for?

drsmachado

Ps1c0tIcO:
sim esse é que é o problema
tenho que mostrar a maior e a menor idade do grupo e
Finalizar a entrada de dados ao ser digitada uma idade negativa.
não tem como pegar o segundo menor valor?

Como a condição de saída do while é idade < 0, você precisa validar para que, ao se informar a idade < 0, ele não faça a análise de menor idade, entende?

P

eu tenho que mostrar a idade e sexo da pessoa com Menor idade
ja tentei usa o for sim mais eu tenho que coletar somente os dados de idade,
sexo (M/F) e salário.

drsmachado ja pensei nisso tambem mais eu nao sei como fazer

S

Ps1c0tIcO:
eu tenho que mostrar a idade e sexo da pessoa com Menor idade
ja tentei usa o for sim mais eu tenho que coletar somente os dados de idade,
sexo (M/F) e salário.

La no if poe isso aqui:

if (idade < menor && idade >= 0) { menor = idade; }

Ou se preferir encerrar o while imediatamente após o usuario digitar a idade negativa:

System.out.print("Digite a idade: "); idade = Integer.parseInt(e.nextLine()); if(idade < 0) { break; }

drsmachado

Sem_Nome:
Ps1c0tIcO:
eu tenho que mostrar a idade e sexo da pessoa com Menor idade
ja tentei usa o for sim mais eu tenho que coletar somente os dados de idade,
sexo (M/F) e salário.

La no if poe isso aqui:

if (idade < menor && idade >= 0) { menor = idade; }

Ou se preferir encerrar o while imediatamente após o usuario digitar a idade negativa:

System.out.print("Digite a idade: "); idade = Integer.parseInt(e.nextLine()); if(idade < 0) { break; }


Camarada, não faça isso.
Ele está com preguiça de pensar. Deixe-o usar um pouco mais o cérebro, a resposta não é difícil.

S

drsmachado:
Sem_Nome:
Ps1c0tIcO:
eu tenho que mostrar a idade e sexo da pessoa com Menor idade
ja tentei usa o for sim mais eu tenho que coletar somente os dados de idade,
sexo (M/F) e salário.

La no if poe isso aqui:

if (idade < menor && idade >= 0) { menor = idade; }

Ou se preferir encerrar o while imediatamente após o usuario digitar a idade negativa:

System.out.print("Digite a idade: "); idade = Integer.parseInt(e.nextLine()); if(idade < 0) { break; }


Camarada, não faça isso.
Ele está com preguiça de pensar. Deixe-o usar um pouco mais o cérebro, a resposta não é difícil.

Realmente eu não deveria fazer isso mas confesso que sempre espero que alguem muito mais experiente possa mostrar uma solução melhor para que eu também aprenda a usa-la :smiley:

P

mais nao deu nao ja tinha tentado isso tambem de todo jeito q eu tento ou da -1 ou da 0
to com preguiça nao lol to desde ontem tentando ja tentei mudar de todo jeito esse if
nao posso usar o break;

if (idade < menor && idade >= 0) { menor = idade; }

Digite a idade: 20
Digite o Salário: 200
Digite o sexo (M) ou (F): F
Digite a idade: 50
Digite o Salário: 200
Digite o sexo (M) ou (F): M
Digite a idade: 30
Digite o Salário: 500
Digite o sexo (M) ou (F): M
Digite a idade: -1
Digite o Salário: 200
Digite o sexo (M) ou (F): M
A Média do salário é de R$: 275
A maior idade é: 50
A menor idade é: 0
Quantidade de mulheres com salário até R$ 200: 1
Idade e sexo da pessoa com o menor salário: 0 Anos, Sexo M

Process completed.

drsmachado

Leia a minha frase aí… “Uma das definições de demência é esperar resultados diferentes, agindo sempre da mesma maneira”.
Primeiro, você precisa entender que precisa validar se a idade é >= 0. Se não for, já não executa mais lhufas dentro do while e já sai do laço…

drsmachado

Aliás, vejo dois problemas principais que te impedem de resolver isso, preguiça de pensar e não criar um algoritmo para estruturar o problema.
Sugiro que você estude muito mais antes de prosseguir, pois as dificuldades serão muito maiores.

P

drsmachado eu fiz um algoritmo sim
e tbm nao gosto só de pegar resposta pronta
como eu disse eu to desde ontem tentando resolver este exercicio
começei de manha fui durmi 5 hrs da madrugada acordei e continuei tentando
depois de tentar muito ai sim resolvi postar aki pra ver se alguem me ajuda tambem nao to pedindo tudo pronto até pq eu tenho mesmo q aprender pq to de exame desta materia e esse é só um exercicio para eu treinar nao é nenhum trabalho nem ta valendo nota to fazendo mesmo é pra aprender
só pra me darem uma idéia mesmo de como fazer como vc ta me dando dicas eu vou tentando fazer
mais se nao to conseguindo é por burrice mesmo e nao por preguiça
quando eu começo vou até o fim senao ja teria desistido e ia para o proximo exercicio

o algoritmo q eu fiz foi esse:

Algoritmo

declare idade,salario,media,soma,salario2,maior,menor,soma2,idade2	numérico

declare sexo,sexo2

enquanto (idade >=0)

escreva "Digite a idade: "

leia idade

escreva "Digite o Salário: "

leia salario

escreva "Digite o sexo (M) ou (F): "

leia sexo

soma <- soma+1

salario2 <- salario2+salario

se (idade > maior)

então maior <- idade

fim se

se (idade < menor e idade >= 0)

então menor <- idade

fim se

se (salario <= 200 e sexo = F)

então soma2 <- soma2+1

fim se

se (salario < menor)

entao idade2 <- idade

sexo2 <- sexo;

fim se

fim enquanto

media = salario2/soma

escreva "A Média do salário é de R$: ",media

escreva "A maior idade é: ",maior

escreva "A menor idade é: ",menor

escreva "Quantidade de mulheres com salário até R$ 200: ",soma2

escreva "Idade e sexo da pessoa com o menor salário: “,idade2,” Anos, Sexo ",sexo2
P

consegui resolver o problema do menor valor
agora só falta Idade e sexo da pessoa com o menor salário.
se alguem tiver alguma dica postem ae :D

import java.util.Scanner;      
public class repeticaoex1 {      
    public static void main (String args[]){      
        Scanner e = new Scanner (System.in);      
        char sexo,sexo2=0;      
        int idade=0,salario=0,media=0,soma=0,salario2=0,      
        maior=0,menor=0,soma2=0,idade2=0,menors=0;      
    
        while (idade >= 0){    
            System.out.print ("Digite a idade: ");      
            idade = Integer.parseInt(e.nextLine());
            if (idade >=0) {
            System.out.print ("Digite o Salário: ");      
            salario = Integer.parseInt(e.nextLine());    
            System.out.print ("Digite o sexo (M) ou (F): ");      
            sexo = e.nextLine().charAt(0);     
            soma++;   
            salario2 = salario2+salario;      
            if (idade > maior)
            {maior = idade;      
            }
            if (menor == 0 )
            {menor = idade;
            } 	
            if (menor > idade)
            {menor = idade;
            }
            if (salario <= 200 && sexo == 'F')
            {soma2++;      
            } 
            if (menors == 0)
            {menors = salario;
            } 
            if (menors > salario)
            {menors = salario;
            }
            idade2 = idade;
            sexo2 = sexo;
            }
                  
               
        }      
        media = salario2/soma;      
        System.out.println ("A Média do salário é de R$: "+media);      
        System.out.println ("A maior idade é: "+maior);      
        System.out.println ("A menor idade é: "+menor);      
        System.out.println ("Quantidade de mulheres com salário até R$ 200: "+soma2);      
        System.out.println ("Idade e sexo da pessoa com o menor salário: "+idade2+" Anos, Sexo "+sexo2);      
    }         
}
S

Ja pensou em fazer OO? Algo do tipo:

class Pessoa {

private int idade;
private char sexo;
private double salario;

//metodos

E criar uma lista de pessoas? Tornaria seu código muito mais limpo.

drsmachado
Sem_Nome:
Ja pensou em fazer OO? Algo do tipo:
class Pessoa {

private int idade;
private char sexo;
private double salario;

//metodos

E criar uma lista de pessoas? Tornaria seu código muito mais limpo.


Bom dia!!!
Camarada, ele está resolvendo um problema proposto, com determinadas regras para a resolução.
Sendo assim, determinados recursos não podem ser utilizados.
Por favor, tente se ater ao escopo do problema, não existe uma bala de prata, embora a sugestão seja boa, ele ainda "engatinha" na programação java. Não o faça pular etapas. Essas dificuldades são normais e benvindas quando se inicia a transição ou o convívio com uma linguagem.

drsmachado

Teu algoritmo possuía erros. Por isso é importante usar uma ferramenta como o visualg, para te auxiliar ou, então, tentar ver as coisas de outro modo (em outras palavras, pensar).

Algoritmo
	declare idade,salario,media,soma,salario2,maior,menor,soma2,idade2 numérico
	declare sexo,sexo2 literal
	
	//Declaro a maior idade como sendo menor que o menor valor permitido
	//qualquer valor inserido sempre será maior que o valor inicial
	maior <- -1
        //Aqui o menor começa com 10000, creio que um problema que propõe avaliar quantidade de mulheres com salário <= 200
        //não tenha ninguém que receba mais que isso
	menor <- 10000
	
	enquanto (idade >=0)
		escreva "Digite a idade: "
		leia idade
		//Verifico se a idade informada é maior ou igual a zero
		//Caso não seja, não preciso de nenhum outro dado
		se idade >= 0 então
			escreva "Digite o Salário: "
			leia salario
			escreva "Digite o sexo (M) ou (F): "
			leia sexo
			soma <- soma+1
			salario2 <- salario2+salario
			se (idade > maior)
				então maior <- idade
			fim se
			se (idade < menor e idade >= 0)
				então menor <- idade
			fim se
			se (salario <= 200 e sexo = F)
				então soma2 <- soma2+1
			fim se
			//Aqui está o erro, caso o salário seja menor que menor
			//Você precisa substituir o valor de menor pelo valor do salário informado
			se (salario < menor)
				entao idade2 <- idade
				sexo2 <- sexo;
				//menor <- salario
			fim se
		fimse
	fim enquanto
	media = salario2/soma
	escreva "A Média do salário é de R$: ",media
	escreva "A maior idade é: ",maior
	escreva "A menor idade é: ",menor
	escreva "Quantidade de mulheres com salário até R$ 200: ",soma2
	escreva "Idade e sexo da pessoa com o menor salário: ",idade2," Anos, Sexo ",sexo2 
	
fimAlgoritmo
P

eu ja tinha resolvido ontem vlw pelas dicas :D
eu nao podia usa o visualg e tbm na prova as vezes pede o algoritmo e la nao pode usar ele, o algoritmo q aprendi é um pouco diferente do que usam no visualg
meu maior problema ta na lógica mesmo tenho muita dificuldade

fiz um pouco diferente do que vcs falaram pq eu tinha q fazer do jeito que tava pedindo la e de acordo com oq aprendi ate agora por isso tive q fazer sem usar o "Integer.parseInt(e.nextLine());" nem sei pra que serve isso ainda lol

import java.util.Scanner;      
public class repeticaoex1 {      
    public static void main (String args[]){      
        Scanner e = new Scanner (System.in);      
        char sexo,sexo2=0;      
        int idade=0,salario=0,media=0,soma=0,salario2=0,      
        maior=0,menor=0,soma2=0,idade2=0,menors=0;      
    	
        while (idade >= 0){    
            System.out.print ("Digite a idade: ");      
            idade = e.nextInt();
            if (idade >=0) {
            System.out.print ("Digite o Salário: ");      
            salario = e.nextInt();    
            System.out.print ("Digite o sexo (M) ou (F): ");      
            sexo = e.next().charAt(0);     
            soma++;   
            salario2 = salario2+salario;       
            if (idade > maior)
            {maior = idade;      
            }
            if (menor == 0)
            {menor = idade;
            } 	
            if (menor > idade)
            {menor = idade;
            }
            if (salario <= 200 && sexo == 'F')
            {soma2++;      
            } 
            if (menors == 0)
            {menors = salario;
            }
            if (menors > salario)
            {menors = salario;
            idade2 = idade;
            sexo2 = sexo;
            } 
            	
  }
  }      
        media = salario2/soma;      
        System.out.println ("A Média do salário é de R$: "+media);      
        System.out.println ("A maior idade é: "+maior);      
        System.out.println ("A menor idade é: "+menor);  
        System.out.println ("Quantidade de mulheres com salário até R$ 200: "+soma2);  
        System.out.println ("Idade e sexo da pessoa com o menor salário: "+idade2+" Anos, Sexo "+sexo2);  
    }         
}

Digite a idade: 20
Digite o Salário: 200
Digite o sexo (M) ou (F): F
Digite a idade: 30
Digite o Salário: 150
Digite o sexo (M) ou (F): F
Digite a idade: 40
Digite o Salário: 100
Digite o sexo (M) ou (F): M
Digite a idade: -1
A Média do salário é de R$: 150
A maior idade é: 40
A menor idade é: 20
Quantidade de mulheres com salário até R$ 200: 2
Idade e sexo da pessoa com o menor salário: 40 Anos, Sexo M

Process completed.

nel
Ps1c0tIcO:
eu ja tinha resolvido ontem vlw pelas dicas :D eu nao podia usa o visualg e tbm na prova as vezes pede o algoritmo e la nao pode usar ele, o algoritmo q aprendi é um pouco diferente do que usam no visualg meu maior problema ta na lógica mesmo tenho muita dificuldade

fiz um pouco diferente do que vcs falaram pq eu tinha q fazer do jeito que tava pedindo la e de acordo com oq aprendi ate agora por isso tive q fazer sem usar o "Integer.parseInt(e.nextLine());" nem sei pra que serve isso ainda lol

import java.util.Scanner;      
public class repeticaoex1 {      
    public static void main (String args[]){      
        Scanner e = new Scanner (System.in);      
        char sexo,sexo2=0;      
        int idade=0,salario=0,media=0,soma=0,salario2=0,      
        maior=0,menor=0,soma2=0,idade2=0,menors=0;      
    	
        while (idade >= 0){    
            System.out.print ("Digite a idade: ");      
            idade = e.nextInt();
            if (idade >=0) {
            System.out.print ("Digite o Salário: ");      
            salario = e.nextInt();    
            System.out.print ("Digite o sexo (M) ou (F): ");      
            sexo = e.next().charAt(0);     
            soma++;   
            salario2 = salario2+salario;       
            if (idade > maior)
            {maior = idade;      
            }
            if (menor == 0)
            {menor = idade;
            } 	
            if (menor > idade)
            {menor = idade;
            }
            if (salario <= 200 && sexo == 'F')
            {soma2++;      
            } 
            if (menors == 0)
            {menors = salario;
            }
            if (menors > salario)
            {menors = salario;
            idade2 = idade;
            sexo2 = sexo;
            } 
            	
  }
  }      
        media = salario2/soma;      
        System.out.println ("A Média do salário é de R$: "+media);      
        System.out.println ("A maior idade é: "+maior);      
        System.out.println ("A menor idade é: "+menor);  
        System.out.println ("Quantidade de mulheres com salário até R$ 200: "+soma2);  
        System.out.println ("Idade e sexo da pessoa com o menor salário: "+idade2+" Anos, Sexo "+sexo2);  
    }         
}

Digite a idade: 20
Digite o Salário: 200
Digite o sexo (M) ou (F): F
Digite a idade: 30
Digite o Salário: 150
Digite o sexo (M) ou (F): F
Digite a idade: 40
Digite o Salário: 100
Digite o sexo (M) ou (F): M
Digite a idade: -1
A Média do salário é de R$: 150
A maior idade é: 40
A menor idade é: 20
Quantidade de mulheres com salário até R$ 200: 2
Idade e sexo da pessoa com o menor salário: 40 Anos, Sexo M

Process completed.

"Integer.parseInt(e.nextLine());" nem sei pra que serve isso ainda lol

Sabe o mínimo de inglês ? Porque não é implícito que "isso" transforma uma String em um Integer ?

Sobre ser péssimo em lógica, procure um livro/apostila para trabalhar exclusivamente exercícios de lógica matemática. Não precisa ser nada para desenvolver em C, C++, Java, enfim, nenhuma linguagem de desenvolvimento. Depois, para aprender a melhorar a lógica em questões de algoritmo, mas já adianta, que com uma boa lógica matemática, terá grande (ou não) facilidade para o desenvolvimento do algoritmo.

P

Sabe o mínimo de inglês ? Porque não é implícito que “isso” transforma uma String em um Integer ?

Sobre ser péssimo em lógica, procure um livro/apostila para trabalhar exclusivamente exercícios de lógica matemática. Não precisa ser nada para desenvolver em C, C++, Java, enfim, nenhuma linguagem de desenvolvimento. Depois, para aprender a melhorar a lógica em questões de algoritmo, mas já adianta, que com uma boa lógica matemática, terá grande (ou não) facilidade para o desenvolvimento do algoritmo.

é que ainda não aprendi sobre Integer

to precisando mesmo porque eu entrei na faculdade quase 2 meses depois que já tinha começado as aulas, quando entrei já tinha explicado a parte de lógica, dai já começei na parte de programação sem ter estudado a lógica.

Criado 26 de junho de 2012
Ultima resposta 27 de jun. de 2012
Respostas 38
Participantes 4