Replica vector

2 respostas
M

Defina uma função que copia (replica) um vector de inteiros, tendo o novo vector um tamanho dado como argumento.
Exemplo: copy({1, 2, 3}, 6) → {1, 2, 3, 0, 0, 0}

Eu fiz o meu programa:

public class copia {

/*public static int[] copy(int[] v, int length){
	int[] v1 = new int[length];
	int tamanho = 0; 
		while(tamanho < v.length){
			v1[tamanho] = v[tamanho];
			tamanho++; 
		} 
		return v1; 		
	}
*/
public static int[] copy(int[] v){
	
	int[] v1 = new int[v.length]; 
	int tamanho = 0; 
		while(tamanho < v1.length){ 
			v1[tamanho] = v[tamanho]; 
			tamanho++; 
		} 
		return v1; 
	}
}

O meu problema é que não sei fazer a parte que falta acrescentar ao programa para imprimir o resultado no ecrã, alguem me pode ajudar???

2 Respostas

jvkirk

bom, pelo que entendi do que vc falou, vc ta fazendo errado
fiz de um jeito fácil de vc entender aqui, vo te explicar

import java.util.Scanner;

public class Copia {
	public static int[] copiar (int[] vet, int tamanho) { //o método copiar recebendo a array e o tamanho que vc mandar
		int[] vet2 = new int[tamanho]; //criando a nova array do tamanho especificado
		
		for (int i = 0; i < vet.length; i++) { //for que passa pelas arrays, atribuindo os valores de vet ao vet2
			vet2[i] = vet[i];
		}
		
		return vet2; //retorna o vet2
	}
	
	public static void main (String[] args) {
		int[] vet = new int[3]; //a primeira array
		Scanner leitura = new Scanner(System.in); //criando uma nova variável de leitura (não sei se vc sabe, através da classe Scanner pode-se capturar valores digitados e atribuí-los para uma variável)
		
		for (int i = 0; i < 3; i++) { //for que passará pela array vet
			System.out.println ("Digite um número para a posicao " + i + ": ");
			vet[i] = leitura.nextInt(); //cada posição da array receberá um valor digitado por vc, através da variável leitura, que é uma variável Scanner, que invoca o método nextInt()
		}
		
		for (int i = 0; i < 3; System.out.print (vet[i] + " "), i++); //exibe a primeira array
		
		System.out.println();
		
		int[] v = copiar (vet, 6); //cria uma nova array, e atribui a chamada do metodo copiar à essa nova array (ela receberá o retorno do método)
		
		for (int i = 0; i < 6; System.out.print (v[i] + " "), i++); //exibe o novo vetor
	}
}

Pelo que entendi do q vc falo é isso aí, qualquer coisa só perguntar
e se vc nao entendeu a parte do Scanner, testa com valores fixos aí, só pra ver se entendeu o que vc queria

jvkirk

M
jvkirk:
bom, pelo que entendi do que vc falou, vc ta fazendo errado fiz de um jeito fácil de vc entender aqui, vo te explicar
import java.util.Scanner;

public class Copia {
	public static int[] copiar (int[] vet, int tamanho) { //o método copiar recebendo a array e o tamanho que vc mandar
		int[] vet2 = new int[tamanho]; //criando a nova array do tamanho especificado
		
		for (int i = 0; i < vet.length; i++) { //for que passa pelas arrays, atribuindo os valores de vet ao vet2
			vet2[i] = vet[i];
		}
		
		return vet2; //retorna o vet2
	}
	
	public static void main (String[] args) {
		int[] vet = new int[3]; //a primeira array
		Scanner leitura = new Scanner(System.in); //criando uma nova variável de leitura (não sei se vc sabe, através da classe Scanner pode-se capturar valores digitados e atribuí-los para uma variável)
		
		for (int i = 0; i < 3; i++) { //for que passará pela array vet
			System.out.println ("Digite um número para a posicao " + i + ": ");
			vet[i] = leitura.nextInt(); //cada posição da array receberá um valor digitado por vc, através da variável leitura, que é uma variável Scanner, que invoca o método nextInt()
		}
		
		for (int i = 0; i < 3; System.out.print (vet[i] + " "), i++); //exibe a primeira array
		
		System.out.println();
		
		int[] v = copiar (vet, 6); //cria uma nova array, e atribui a chamada do metodo copiar à essa nova array (ela receberá o retorno do método)
		
		for (int i = 0; i < 6; System.out.print (v[i] + " "), i++); //exibe o novo vetor
	}
}

Pelo que entendi do q vc falo é isso aí, qualquer coisa só perguntar
e se vc nao entendeu a parte do Scanner, testa com valores fixos aí, só pra ver se entendeu o que vc queria

jvkirk

Muito obrigada :)
E os comentários ao longo do programa ajudaram bastante a entender o seu funcionamento!!! :)

Criado 12 de novembro de 2011
Ultima resposta 12 de nov. de 2011
Respostas 2
Participantes 2