Alguém poderia me ajudar com esse algoritmo?

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!

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

Poderia colocar pra mim como ficaria no código? eu não conheco ArrayList… como eu faria para ler N notas em um ArrayList?

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.

:wink:

Desculpa a ignorância mas não entendi à lógica… :frowning:

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.

Desculpa o incomodo e obrigado pela ajuda.

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.

adilsonmartins segue um exemplo:

...
Scanner teclado = new Scanner(System.in);

int total_notas = teclado.nextInt();

int notas[] = new int[total_notas];
...

Daí em diante é com você.

Lembrando que a classe Scanner lê os dados do teclado e encontra-se no pacote java.util.

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

[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.

[quote=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

[/quote]

Ai amigo… O código. O cara colocou ai pra vc direitinho. Pq não roda ele?
=D :smiley:

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.

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…

:wink:

Dica,pertube o professor tirando todas as suas duvidas,TODAS,não deixe passar duvida nenhuma,professores são pagos para isso…

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?

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?

struct XAluno {
int nota;
float coef;
};

int main() {

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;

}

Ficaria assim em c++?

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:

for(int posicao = 0 ; posicao < notas.length; posicao++){

JOptionpane.showmessageDialog("Nota " + (posicao+1) + " " + notas[posicao]); 

}

Com essas informações você consegue fazer este exercício.

Espero ter ajudado.

Att.

Artur Martini

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.

[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]