Faça um programa em Java que calcula a média ponderada entre N valores digitados pelo usuário, sendo que os pesos de cada valor também são digitados pelo usuário. O valor de N deve ser informado pelo usuário no início do programa. Com base no valor de N, o programa saberá quantos valores e coeficientes terá que ler. As notas são números decimais e os coeficientes números inteiros.
Média aritmética ponderada
Então pessoal eu tenho que criar um Array dinâmico certo? não consigo criar um Array dinâmico em Java, poderiam ajudar a solucionar esse algoritmo?
Você não precisa criar um array dinâmico, porque pergunta pelo valor de N, então o array terá N posições.
Agora se quiser algo assim, pode usar a API de Collections, como a classe ArrayList, que cresce conforme a necessidade. Exemplo de uso:List<Integer> lista = new ArrayList<Integer>();
lista.add(1); //adicionando um item, sem se preocupar com o tamanho atual da mesma
Faz um while e a cada iteração pergunte se o usuário quer continuar inserindo valores. Enquanto ele quiser você implementa o lista.add() que o Rodrigo indicou acima.
Se você consultar A documentação da Classe ArrayList consegue verificar todos os métodos da mesma. Nela existe um método chamado size(), que retorna o tamanho da lista, ou seja, o número de elementos que há nela.
Se você sabe usar um for, vai saber o que tem que fazer tendo em mãos o tamanho da lista.
Já começou a codificar? O que você já tem em mãos? A linha de raciocínio pra esse problema é simples, é um while pra receber os valores do usuário e um for pra capturar o valores do ArrayList e calcular a média.
Onde você está sentindo dificuldade? A gente está aqui te explicando com documentação e exemplos, tente ser mais específico na sua dúvida.
Sinceramente eu não sei fazer o while para estar recebendo essas notas e o for para estar pegando esses valores do ArrayList para que eu possa assim calcular a média.
Estou com uma enorme dificuldade com a lógica desse algoritmo.
[quote=adilsonmartins]Faça um programa em Java que calcula a média ponderada entre N valores digitados pelo usuário, sendo que os pesos de cada valor também são digitados pelo usuário. O valor de N deve ser informado pelo usuário no início do programa. Com base no valor de N, o programa saberá quantos valores e coeficientes terá que ler. As notas são números decimais e os coeficientes números inteiros.
Média aritmética ponderada
Então pessoal eu tenho que criar um Array dinâmico certo? não consigo criar um Array dinâmico em Java, poderiam ajudar a solucionar esse algoritmo?
OBRIGADO!
[/quote]
Lição de casa?
Por que você não estuda os conceitos isoladamente e então, junta-os e aplica ao que precisa fazer.
Você terá de estudar estruturas de repetição e descobrir qual delas melhor se adequa ao que o exercício pede.
Estudar vetores e descobrir como pode usar uma estrutura de repetição para preencher vetores.
Estudar estruturas de desvio condicional.
Sem que você entenda estes conceitos de forma isolada, junta-los pode ser mais problema. E sem conseguir juntar isso, seguir com programação pode não ser adequado.
Agradeço a ajuda de todos que postaram até o momento, Douglas me desculpe mas não entendi ainda, eu sou calouro em SI, tudo isso é novo pra mim… se pudessem me dar uma ajuda mais aprofundada eu agradeço muito, não é por falta de estudar eu estou até o momento no computador e não saio enquanto não conseguir fazer.
Mas deixa eu te perguntar uma coisa. O seu professor de programação já ensinou o que pra você? Você já tem noção de loops, iteração em arrays?
O pessoal já te perguntou diversas vezes quais são seus conhecimentos, mas você insiste em não falar.
Se você realmente não aprendeu nada relacionado a desenvolvimento sugiro que fale com seu professor, porque é loucura passar um exercício desse sem ter dado a mínima base no assuntos que o pessoal já citou.
Não é puxão de orelha(quem sou eu pra dar puxão de orelha em alguém), mas o pessoal aqui não costuma dar código pronto pra ninguém, muito menos resolver lição de casa. Se você estiver disposto a conversar, expôr sua situação e seus conhecimentos alguém vai te ajudar com certeza.
Não adianta alguém te dar um código utilizando ArrayList se você está no primeiro semestre ainda. Você vai entregar isso, o professor vai te pedir pra explicar e você vai tomar bomba.
Se a sua solução não pode usar recursos mais avançados da linguagem, podemos te ajudar a fazer, vai ser mais complicado, mas não é impossível…
Enfim, se você realmente não está entendendo nada que o pessoal está falando aqui, sugiro começar do início. Ler um bom livro de lógica, procurar uma apostila de introdução a programação, treinar com uma ferramenta como o VisualG…
Então vamos lá, eu não sei usar Array em Java, no c++ por exemplo eu consigo resolver… sei que a lógica é a mesma, porem em java não consigo… minha duvida é a seguinte, tenho que primeiro digitar o numero de notas que eu quero lançar no sistema, vamos supor que eu quero lançar 3 notas… então abre pra mim um JOptionPane.showInputDialog(null, "Digite as notas: "); … a minha duvida é a seguinte como eu faço para eu poder lançar as 3 notas usando um Array que receba essas 3 notas… o resto eu conseguiria fazer, a minha duvida está na Array e na entrada de dados… Não quero tudo pronto mas se pudessem esclarecer essa parte pra mim eu agradeceria muito… quanto a tirar minhas duvidas eu irei sim tira-las na terça que é a proxima aula, até lá eu gostaria de entender essa parte, podem me ajudar?
int tamanho;
XAluno *vetor;
vetor = new XAluno[tamanho];
int i = 0;
cout<<"Digite o numero de notas: ";
cin>> tamanho;
cout<< endl;
while(i < tamanho) {
cout<<"Digite a nota: ";
cin>> vetor[tamanho].nota;
cout<< endl;
Para facilitar seu entendimento, quando falamos em Array pense em um Vetor você já deve ter visto.
Pense como um armário cheio de gavetas aonde você pode guardar e depois acessar as coisas guardadas em cada gaveta, exemplificando:
Array = [posicao0][posicao1][posicao2]
Obs: no Array acima ele tem tamanho 3 porém para acessar as posições parte de zero, ou seja, o tamanho dele é 3 mas se quiser acessar a posição 3 terá que fazer assim:
Array[2]
No Java para inicializar um Array você deve especificar: <tipo[]> = new <tipo[tamanho]>;
No seu caso seria: int[] notas = new int[3];
agora vai precisar criar uma variável para captar as notas, porém como está usando o JOptionpane ele vai ter como entrada uma String e depois você converte para int.
String str = JOptionpane.showinputDialog(null, “Digite a primeira nota”);
int nota = Integer.parseInt(str);
Depois de convertemos a nota para int, podemos guardar a nota no Array:
notas[0] = nota;
Até aqui você consegue captar e guardar as notas no array;
Para acessar as notas, faça um laço for assim percorrendo todo o Array:
Artur, nesse caso o vetor tem que ser dinâmico, ele tem que receber N notas, para que assim depois digite as notas e tb o peso de cada uma delas… eu preciso aprender a fazer um vetor dinâmico em Java, junto com o Input para a entrada de dados digitados pelo usuário, ai está a minha dúvida.