Calculador de media, não informando a quantidade de numeros

12 respostas
Tektron

Se alguem poder me ajuda, estou na diciplina de algoritoms e programação.
O meu algoritmo!

public class Media {

public static void main(String []agrgs) {

double numeros=Entrada.leiaDouble("Valor: ");

int pergunta=Entrada.leiaInt("Adicionar mais um numero 1/sim 2/não: ");

int vezes=1;

while(pergunta==1) {

numeros=Entrada.leiaDouble("Valor: ");

pergunta=Entrada.leiaInt("Adicionar mais um numero 1/sim 2/não: ");

numeros=numeros+numeros;

vezes=vezes+1;

}

while(pergunta<1||pergunta>2) {

numeros=Entrada.leiaDouble("Valor: ");

pergunta=Entrada.leiaInt("Adicionar mais um numero 1/sim 2/não: ");

numeros=numeros+numeros;

vezes=vezes+1;

}

if(pergunta==2) {

System.out.println("Media: "+(numeros/vezes));

}

}

}

12 Respostas

M

Em que você precisa de ajuda?

ViniGodoy

Ao postar dúvidas, por favor, leia essas dicas:

Tektron

esse algoritmo não esta funcionando corretamente
não sei onde esta meu erro, se é na matematica ou na programação

mcirqueira

Cara, ao colocar codigo, ultilize as tags code.

Quando se ultiliza || ou &&, colocasse parenteses:
Veja:

public class Media { 
 public static void main(String []agrgs) { 
  double numeros = Entrada.leiaDouble("Valor: "); 
  int pergunta = Entrada.leiaInt("Adicionar mais um numero 1/sim 2/não: "); 
  int vezes = 1; 
  while (pergunta == 1) { 
   numeros=Entrada.leiaDouble("Valor: "); 
   pergunta=Entrada.leiaInt("Adicionar mais um numero 1/sim 2/não: "); 
   numeros=numeros+numeros; 
   vezes = vezes + 1; 
  } 
  while ((pergunta &lt; 1) || (pergunta &gt; 2)) { // coloque os parenteses nas duas expressões
  numeros = Entrada.leiaDouble("Valor: "); 
  pergunta = Entrada.leiaInt("Adicionar mais um numero 1/sim 2/não: "); 
  numeros = numeros + numeros; 
  vezes = vezes + 1; 
  } 
  if (pergunta == 2) { 
  System.out.println("Media: " + (numeros / vezes)); 
  } 
 } 
}

Não entendi muito bem seu código não.
É pra que?

Tektron

calcular a media de numeros, independente da quantidade dos mesmo

ex: (10+10+10+10)/4=10

se tiver uma outra sugestão de algoritmo
é bem vinda

ViniGodoy

Observe que você usou a variável números tanto para a leitura do número, quanto para a soma dos números.
Isso não dá certo, pois a cada leitura, você destrói o que a variável tinha antigamente.

Além disso, essa conta:

numeros = numeros + numeros;

Vai simplesmente multiplicar o valor atual de números por 2.

A lógica está quase certa. Apenas crie duas variáveis e o problema estará resolvido.

Tektron

Eu não entendi muito bem o que você quis dizer.
Se poder postar um exemplo usando essas 2 variaveis.

ViniGodoy
public class Media {
  public static void main(String []agrgs) {
    int pergunta=1;
    int vezes=0;    
    double soma = 0;
    while(pergunta==1) {
      double numero=Entrada.leiaDouble("Valor: ");
      soma += numero;
      vezes++;

      pergunta=Entrada.leiaInt("Adicionar mais um numero 1/sim 2/não: ");
    }
    System.out.printf("Media: %.2f%n", soma/vezes);
  }
}
mcirqueira

Ah! Uma programa para tirar médias aritméticas?!?!
Uma colega já fez isso no fórum, só não me lembro o nome dela, veja este programinha de CONSOLE:

import java.util.Scanner;

public class Medias {
 public static void main (String []args) {
  Scanner ler = new Scanner(System.in);
   System.out.print("Digite o primeiro numero: ");
   double num1 = ler.nextDouble();
   System.out.print("Digite o segundo numero: ");
   double num2 = ler.nextDouble();
   System.out.print("Digite o terceiro numero: ");
   double num3 = ler.nextDouble();  
   System.out.print("Digite o quarto numero: ");
   double num4 = ler.nextDouble();
   double media = (num1 + num2 + num3 + num4) / 4;
   System.out.println("A media aritmetica e " + media);
 }
}
Tektron

Muito obrigado!!

Você foi de grande ajuda.

mcirqueira

Tektron:
Muito obrigado!!

Você foi de grande ajuda.

De nada!
Ao fazer um programa matemático em java, pense como você faria no lápis e papel. Depois coloque-os em java.

W

Olá amigo,
também estou começando, mas da uma olhada neste código e vê se é isso que você quer!

import java.util.Scanner;
public class Media {
	
	public static void main(String []agrgs) { 
		
		Scanner s = new Scanner(System.in);
		
		double numeros;
		double media = 0;
		int pergunta;
		int vezes = 0;
				
		do {
			System.out.print("Valor: ");
			numeros = s.nextDouble();
			media += numeros;
			System.out.print("Adicionar mais um numero 1/sim 2/não: ");
			pergunta = s.nextInt();
			vezes++;
		} while ((pergunta == 1) || (pergunta < 1) || (pergunta > 2));
		
		if(pergunta == 2) {
			System.out.println("Media: " +(media/vezes)); 
		}
	}
}
Criado 7 de abril de 2012
Ultima resposta 7 de abr. de 2012
Respostas 12
Participantes 5