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
A
adilsonmartins
Poderia colocar pra mim como ficaria no código? eu não conheco ArrayList… como eu faria para ler N notas em um ArrayList?
Ruttmann
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.
A
adilsonmartins
Desculpa a ignorância mas não entendi à lógica…
Ruttmann
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.
A
adilsonmartins
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.
Desculpa o incomodo e obrigado pela ajuda.
explosive_spirit
A dica em se usar Collections é válida e muito interessante, mas creio que o enunciado estimula justamente o uso de arrays com tamanhos variáveis.
Lembrando que a classe Scanner lê os dados do teclado e encontra-se no pacote java.util.
douglaskd
variavel_inteira numero = 0;
1 - enquanto( numero < 3) repita_este_codigo_entre_chaves{
2 - imprimir(i);
3 - numero = numero + 1;
}
1 - numero_0 < 3 ? sim, então
2 - 0
3 - numero = 0 + 1 = 1;
1 - numero_1 < 3 ? sim, então
2 - 1
3 - numero = 1 + 1 = 2;
1 - numero_2 < 3 ? sim, então
2 - 2
3 - numero = 2 + 1 = 3;
1 - numero_3 < 3 ? não então ele vai pular o código dentro do while
drsmachado
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!
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.
Luiz_Augusto_Prado
douglaskd:
variavel_inteira numero = 0;
1 - enquanto( numero < 3) repita_este_codigo_entre_chaves{
2 - imprimir(i);
3 - numero = numero + 1;
}
1 - numero_0 < 3 ? sim, então
2 - 0
3 - numero = 0 + 1 = 1;
1 - numero_1 < 3 ? sim, então
2 - 1
3 - numero = 1 + 1 = 2;
1 - numero_2 < 3 ? sim, então
2 - 2
3 - numero = 2 + 1 = 3;
1 - numero_3 < 3 ? não então ele vai pular o código dentro do while
Ai amigo… O código. O cara colocou ai pra vc direitinho. Pq não roda ele?
=D
A
adilsonmartins
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.
Ruttmann
Entendo…
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…
S
Slow17
Dica,pertube o professor tirando todas as suas duvidas,TODAS,não deixe passar duvida nenhuma,professores são pagos para isso…
A
adilsonmartins
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?
drsmachado
Como você faria isso em C++? A parte de criar um array de 3 posições, ler a informação e preencher cada posição?
A
adilsonmartins
structXAluno{intnota;floatcoef;};
int main() {
inttamanho;XAluno*vetor;vetor=newXAluno[tamanho];inti=0;cout<<"Digite o numero de notas: ";cin>>tamanho;cout<<endl;while(i<tamanho){cout<<"Digite a nota: ";cin>>vetor[tamanho].nota;cout<<endl;
}
Ficaria assim em c++?
A
Artur_Martini
Boa noite colega,
Vou tentar ajudá-lo.
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:
Com essas informações você consegue fazer este exercício.
Espero ter ajudado.
Att.
Artur Martini
A
adilsonmartins
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.
Obrigado.
RodrigoKaos
[i]Cara, vc estudou algo sobre java??
Em java o tamanho de um array é fixo, e definido na criação.
O melhor é usar um ArrayList que n tem esse tipo de problema, da uma lida sobre isso
[/i]
A
adilsonmartins
eu li mas não aprendi a usar ArrayList…
RodrigoKaos
[i]Quando vc postar codigo usa a tag CODE, vlw
Brother esse é meu ultimo post nesse tópico.
Estuda java basico, pesquisa por universidadexti, é um canal no youtube, tem um conteudo bem legal sobre java, estuda que tu consegue.
E se vc estudar e não conseguir, então estuda mais. Boa noite
[/i]
A
adilsonmartins
importjava.util.ArrayList;importjavax.swing.JOptionPane;publicclassNotas{publicstaticvoidmain(String[]args){// Array de notasprivateArrayList<Qnotas>listaNotas;publicvoidlancarNotas(){intquantidade=Integer.parseInt(JOptionPane.showInputDialog("Quantas notas deseja lancar ? "));this.listaNotas=newArrayList();doublenotaaluno;for(inti=0;i<quantidade;i++){notaaluno=Double.parseDouble(JOptionPane.showInputDialog("Digite a nota do aluno: "));listaNotas.add(newQnotas(notaaluno));}}}}
andei dando uma olhada e entendi um pouco do que fiz, mas está dando erro até ai poderia dizer o que estou fazendo de errado? não é problema de estudar eu estudo, não quero nada pronto eu quero aprender, eu estou até agora nisso, são 5:12 da madrugada… não sou preguiçoso, o problema é que estou tendo dificuldade.
explosive_spirit
adilsonmartins:
importjava.util.ArrayList;importjavax.swing.JOptionPane;publicclassNotas{publicstaticvoidmain(String[]args){// Array de notasprivateArrayList<Qnotas>listaNotas;publicvoidlancarNotas(){intquantidade=Integer.parseInt(JOptionPane.showInputDialog("Quantasnotasdesejalancar?"));this.listaNotas=newArrayList();doublenotaaluno;for(inti=0;i<quantidade;i++){notaaluno=Double.parseDouble(JOptionPane.showInputDialog("Digiteanotadoaluno:"));listaNotas.add(newQnotas(notaaluno));}}}}
andei dando uma olhada e entendi um pouco do que fiz, mas está dando erro até ai poderia dizer o que estou fazendo de errado? não é problema de estudar eu estudo, não quero nada pronto eu quero aprender, eu estou até agora nisso, são 5:12 da madrugada... não sou preguiçoso, o problema é que estou tendo dificuldade.
Quanto a iniciar o array com o total de notas que o usuário informar, você nem leu meu post brother:
explosive_spirit:
A dica em se usar Collections é válida e muito interessante, mas creio que o enunciado estimula justamente o uso de arrays com tamanhos variáveis.
Lembrando que a classe Scanner lê os dados do teclado e encontra-se no pacote java.util.
A única diferença é que esse exemplo funciona diretamente no console, melhor ainda pra quem está iniciando e pegar as exceptions que o java lançar, etc.