Multiplicando vetores, DÚVIDA [RESOLVIDO]

2 respostas Resolvido
java
Bruno_Gomes1

Bom dia, pessoal estou fazendo alguns exercícios da faculdade e me deparei com a seguinte exercicio:

Elabore uma classe que permita a manipulação de vetores. Para tal, no método principal crie duas instâncias do tipo Vetor definindo a dimensão dos mesmos através do construtor. Nesta classe, elabore um método que receba como parâmetro as instâncias dos vetores e retorne o produto dos pontos, ou seja, o somatório (soma) da operação de multiplicação do conteúdo dos vetores considerando cada posição (para tal, considere -> soma += V1[i] * V2[i]). Esse método somente deve ser executado se as dimensões dos vetores forem as mesmas, caso contrário, deve-se retornar o valor -1.A dimensão de um vetor é obtida pelo método (getDimensao()) definido na classe Vetor.

Essas classes são de autoria minha. A classe vetor ta funcionando e fazendo o que eu preciso. Agora a classe manipula ta me deixando louco :confounded:

CLASSE VETOR:

public class Vetor 
{
	private int dimensao;
	private int[] valores;
	private int soma;

	public Vetor(int dimensao)
	{
		this.setDimensao(dimensao);
		this.incializa();
	}
	
	public int getDimensao() 
	{
		return dimensao;
	}
	
	public void setDimensao(int dimensao) 
	{
		this.dimensao = dimensao;
	}
	
	public int[] getValores() 
	{
		return valores;
	}
	
	public void setValores(int[] valores) 
	{
		this.valores = valores;
	}
	
	public int getSoma()
	{
		return soma;
	}
	
	public void setSoma(int soma)
	{
		this.soma = soma;
	}
	
	public void incializa()
	{
		int i;

		this.valores = new int[dimensao];
		for(i = 0; i < getDimensao(); i++)
		{
			this.valores[i] = (int)(Math.random()*10)+1;
		}
	}

	public void soma()
	{
		int k;
		
		for(k = 0; k < getDimensao(); k++)
		{
			 this.soma += this.valores[k];
		}
	}
	
	public void statusVetor()
	{
		int j;

		for(j = 0; j < getDimensao(); j++)
		{
			System.out.println("Numero aleatorio " + j + ": " +this.valores[j]);
		}
		soma();
		System.out.println("A soma dos números é: " + getSoma());
		System.out.println("");
	}
}

CLASSE PARA MANIPULAR:

public class VetorManipula 
{	
	public void somaVetores(Vetor c, Vetor d)
	{		
		int i;
		
		if(c.getDimensao() == d.getDimensao())
		{
			for(i = 0; i < c.getDimensao(); i++)
			{
				
			}
		}
	}
}

Minha dúvida é a seguinte como que vou fazer a soma de cada elemento de vet na posição 1 com o vet2 na posição 1 e assim sucessivamente? Já tentei varias formas, algumas gambiarra que deletei por que nem eu entendi , mas se alguém poder me dar uma luz :confounded:… fico agradecido :wink:

2 Respostas

4mega

Opa tudo bem, montei sua app aqui para te passar como exemplo, só que ficou bem diferente do que vc implementou, porém acho q o conceito é bem parecido. De uma olhada, talvez te ajude:
exemplo2.rar (28.1 KB)

Bruno_Gomes1
Solucao aceita

Então @4mega obrigado por responder, não compreendi muito bem seu código. Mais acabei conversando com um amigo programador e ele me deu uns toques. Vou postar o código:

CLASSE PARA MANIPULAR:

public class VetorManipula {
	public int somaVetores(Vetor c, Vetor d) {
		int i;
		int soma = 0;

		if (c.getDimensao() == d.getDimensao()) {
			for (i = 0; i < c.getDimensao(); i++) {
				soma += c.getValores()[i] * d.getValores()[i];
			}
			return soma;
		} else {
			return -1;
		}
	}
}

Seria esse o modo coreto para fazer a multiplicação das posições e depois a soma. Fiz a troca do void do método pelo int, fiz a linha para cálculo e coloquei os returns.

Criado 31 de agosto de 2016
Ultima resposta 31 de ago. de 2016
Respostas 2
Participantes 2