Exercicio Deitel

4 respostas
userguj
Galera... no livro do Deitel tem o exercicicio 2.32 que diz o seguinte: "Escreva um programa que insere cinco números e determina e imprime quantos números negativos, quantos números positivos e quantos números zeros foram inseridos." Então fiz um code, que quanto aos números positivos e negativos ta tranquilo, mas queria uma orientação para melhorar quanto a exibiçãos dos numeros "0". Segue o code abaixo:
import java.util.Scanner;

public class Ex_2_32
{
	public static void main (String args [])
	{
		Scanner input = new Scanner (System.in);
		
		int n1, n2, n3, n4, n5;
		int pos = 0;
		int posd1 = 0;
		int posd2 = 0;
		int posd3 = 0;
		int posd4 = 0;
		int posd5 = 0;
		int neg = 0;
		int negd1 = 0;
		int negd2 = 0;
		int negd3 = 0;
		int negd4 = 0;
		int negd5 = 0;
		int ig = 0;
		int igd1 = 0;
		int igd2 = 0;
		int igd3 = 0;
		int igd4 = 0;
		int igd5 = 0;
		
		System.out.println ();
		System.out.println ("Digite cinco numeros de 1 a 9, abaixo:");
		n1 = input.nextInt();
		System.out.print ("");
		n2 = input.nextInt();
		System.out.print ("");
		n3 = input.nextInt();
		System.out.print ("");
		n4 = input.nextInt();
		System.out.print ("");
		n5 = input.nextInt();
		
		if (n1 > 0)
			posd1 = pos + 1;
		if (n1 < 0)
			negd1 = neg + 1;
		if (n1 == 0)
			igd1 = ig + 1;
			
		if (n2 > 0)
			posd2 = pos + 1;
		if (n2 < 0)
			negd2 = neg + 1;
		if (n2 == 0)
			igd2 = ig + 1;
		
		if (n3 > 0)
			posd3 = pos + 1;
		if (n3 < 0)
			negd3 = neg + 1;
		if (n3 == 0)
			igd3 = ig + 1;
			
		if (n4 > 0)
			posd4 = pos + 1;
		if (n4 < 0)
			negd4 = neg + 1;
		if (n4 == 0)
			igd4 = ig + 1;
			
		if (n5 > 0)
			posd5 = pos + 1;
		if (n5 < 0)
			negd5 = neg + 1;
		if (n5 == 0)
			igd5 = ig + 1;
		
		System.out.println ("Voce digitou:");
		
		if ((negd1+negd2+negd3+negd4+negd5) == 0)
			System.out.println ("Nenhum negativo.");
		if ((negd1+negd2+negd3+negd4+negd5) == 1)
			System.out.println ("1 negativo.");
		if ((negd1+negd2+negd3+negd4+negd5) > 1)
			System.out.printf ("%d %s", negd1+negd2+negd3+negd4+negd5, "negativos.\n"); 
		
		if ((posd1+posd2+posd3+posd4+posd5) == 0)
			System.out.println ("Nenhum positivo.");
		if ((posd1+posd2+posd3+posd4+posd5) == 1) 
			System.out.prinln ("1 positivo.");
		if ((posd1+posd2+posd3+posd4+posd5) > 1) 
			System.out.printf ("%d %s", posd1+posd2+posd3+posd4+posd5, "positivos.\n");
		
		if ((igd1+igd2+igd3+igd4+igd5) == 0)
			System.out.println ("Nenhum zero.");
		if ((igd1+igd2+igd3+igd4+igd5) == 1)
			System.out.println ("1 igual a zero.");
		if ((igd1+igd2+igd3+igd4+igd5) > 1)
			System.out.printf("%d %s", igd1+igd2+igd3+igd4+igd5, "iguais a zero.\n");
	}
}

4 Respostas

renamed

Nesse livro você ainda não aprendeu comando de repetição não ne? hgehehe

Eu passei por algo parecido na faculdade em C, o professor não tinha ensinado comando de repetição, apenas desvio condicional com “if” e pedia para lermos 5 números e exibí-los em ordem crescente hehh (também não sabia vetor ainda)

renamed
Dê uma olhada nesse código, pode perguntar o que você não entender:
public static void main(String[] args) {
		int n1, n2, n3, n4, n5;
		int maioresQueZero, menoresQueZero, iguaisAZero;
		
		maioresQueZero = 0;
		menoresQueZero = 0;
		iguaisAZero = 0;
		
		Scanner sc = new Scanner(System.in);
		System.out.print("Digite o número1: ");
		n1 = Integer.parseInt(sc.nextLine());
		if (n1 < 0){
			menoresQueZero = menoresQueZero + 1; //aqui você também poderia escrever menoresQueZero++;
		}else if (n1 > 0){
			maioresQueZero++; //aqui você também poderia escrever maioresQueZero++;
		}else{
			iguaisAZero++;
		}
		
		System.out.print("Digite o número2: ");
		n2 = Integer.parseInt(sc.nextLine());
		if (n2 < 0){
			menoresQueZero = menoresQueZero + 1; //aqui você também poderia escrever menoresQueZero++;
		}else if (n2 > 0){
			maioresQueZero++; //aqui você também poderia escrever maioresQueZero++;
		}else{
			iguaisAZero++;
		}
		
		System.out.print("Digite o número3: ");
		n3 = Integer.parseInt(sc.nextLine());
		if (n3 < 0){
			menoresQueZero = menoresQueZero + 1; //aqui você também poderia escrever menoresQueZero++;
		}else if (n3 > 0){
			maioresQueZero++; //aqui você também poderia escrever maioresQueZero++;
		}else{
			iguaisAZero++;
		}
		
		System.out.print("Digite o número4: ");
		n4 = Integer.parseInt(sc.nextLine());
		if (n4 < 0){
			menoresQueZero = menoresQueZero + 1; //aqui você também poderia escrever menoresQueZero++;
		}else if (n4 > 0){
			maioresQueZero++; //aqui você também poderia escrever maioresQueZero++;
		}else{
			iguaisAZero++;
		}
		
		System.out.print("Digite o número5: ");
		n5 = Integer.parseInt(sc.nextLine());
		if (n5 < 0){
			menoresQueZero = menoresQueZero + 1; //aqui você também poderia escrever menoresQueZero++;
		}else if (n5 > 0){
			maioresQueZero++; //aqui você também poderia escrever maioresQueZero++;
		}else{
			iguaisAZero++;
		}
		
		System.out.println("======== RESULTADO ========");
		System.out.println("Quantidade de números menores que zero: " + menoresQueZero);
		System.out.println("Quantidade de números maiores que zero: " + maioresQueZero);
		System.out.println("Quantidade de números iguais a zero: " + iguaisAZero);
				

	}

}
userguj

renamed: certo, li o seu code e ele faiz a mesma coisa que o meu, certo? porém está bem menor, ficou até mais bonito.

o problema está em por exemplo, são cinco numeros:
Ex.:

n1 = 50 n2 = 6 n3 = 10 n4 = 0 n5 = 1

tendo estes números, então foi digitado 3 zeros, certo?
qto ae n4 ele vai identificar facilmente, mais é qto ao n1 e n3, que ele vai primeiro identificar apenas como positivoOs. Ou ele deve informar apenas se o zero estiver sozinho?
não entendi mto bem o que o exercicio pede tbm !

tendeu ae ?

renamed

Na verdade ele só digitou um zero e outros 2 números que continham (mas não eram) zero.

Criado 30 de outubro de 2009
Ultima resposta 30 de out. de 2009
Respostas 4
Participantes 2