[RESOLVIDO]duvida em retornar numero de pares contidos nas colunas em um array unidimensional

15 respostas
D

Escreva um metodo que recebe como parametro uma matriz (array bidimensional) contendo numeros inteiros positivos. o metodo cria e devolve um array unidimensional contendo em cada posicao a quantidade de numeros pares da respectiva coluna da matriz

public int retornaPares(int[][])

p = new int[] // aqui dentro vai o numero de colunas mas nao sei como pegar isso, ajudem por favor

 for(int i=0;i<m.length;i++)

  //sei que para saber se e par o resto deve ser 0 , por exemplo m%2 == 0;//

15 Respostas

A

o que voce precisa fazer é declarar o array com o tamanho do array de parametro
algo do gênero:

public int[] somaDosParesPorLinha(int[][] parametro) {

        int[] meuArray = new int[parametro.length];

        for ()  {
            int qtdPares = 0;
            for ()  {
                ...
            }
            
        }



    }

[]'s

D

oq vai dentro do if?
como fica o resto?

D
public int[] somaDosParesPorColuna(int[][] m)
{

int[] mi = new int[m.length];

int qtdPares = 0;
for(int i=0;i<m.lenght;i++)
   if(m[i]%2 == 0)
qtdPares++;



}

como fica o resto e , estou fazendo certo?

M

Na expressao do if vai o que você precisa pra pegar os numeros pares, isso você ja falou.
Dentro dele vai o elemento do array que você criou, de um jeito que o index vá aumentando cada vez que o if seja satisfeito =)

Espero que ajude!

A

Você vai precisar percorrer todo o array bidimensional então para isso serão necessários dois For’s

1 para passar por cada elemento da linha e outro para pular de linha em linha :wink:

D

tipo isso

for(int i=0;i<m.length;i++)

for(int j=0;i<m.length;j--)

?

M

Um array bidimensional é somente um array de array…
Então chamar array.length sendo que array é bidimensional somente retorna o tamanho da primeira dimensão…

Voce precisa de um for dentro do outro
Um que vai iterar pela primeira dimensão e o segundo que vai iterar pela segunda dimensão (onde encontram-se os valores)…

Assim, pelo menos é assim que eu faço…

A

Quase,

assim ficaria o codigo final:

public int[] somaDosParesPorLinha(int[][] parametro) {

        int[] meuArray = new int[parametro.length];

        for (int i = 0; i < parametro.length; i++) {
            int qtdPares = 0;
            for (int j = 0; j < parametro[i].length; j++) {
                if (parametro[i][j] % 2 == 0) {
                    qtdPares++;
                }
            }
            meuArray[i] = qtdPares;
        }

        return meuArray;

    }
M

Você quer devolver o numero de numeros pares ou um array que contenha os numeros pares?

A

pelo enunciado ele cria e devolve um array unidimensional, onde cada linha do array, contém a quantidade de números pares de cada linha do array bidimensional passado como parâmetro.

D

numero de pares em cada coluna da matriz

isso é o q pede

vitor_lima

Bom proveito!!

/** Recebe um vetor bidimensional e devolve um vetor unidimensional
	 *     no qual cada posição contém um valor que equivale 
	 *     a quantidade de números pares presentes nas respectivas
	 *     colunas do vetor passado.
	 *     
	 *     EXEMPLO: a posição de indice 1 do vetor retornado
	 *              conterá a quantidade de números
	 *              pares presentes na coluna de índice 1 
	 *              do vetor passado, e assim sucessivamente**/
	
	public int[] achaQntNumerosParesPorColuna(int[][] matriz){
		// criando o vetor que será retornado
		int[] retorno = new int[matriz[0].length]; 
		
		//for para percorrer as colunas
		for(int coluna=0;coluna<matriz[0].length;coluna++){
			//for para percorrer as linhas
			for(int linha=0;linha<matriz.length;linha++){
				 //se o resto da divisão por dois for igual a zero
				if(matriz[linha][coluna]%2==0){
					//somo 1 à posição de indice igual ao valor
					//da váriavel coluna
					retorno[coluna]++;					
				}				
			}
		}				
		//Retorno o vetor
		return retorno;
	}

Acho que deve ser isso que estas a procurar.

Abraço.

D

mto obrigado, era isso mesmo

só mais uma coisa
como eu faria para retornar os pares contidos em cada linha

D

só mais uma duvida se fosse para retornar os numeros impares eu colocaria

if(matriz[linha][coluna]%2 != 0)

isso?

vitor_lima

Retona a quantidade de números pares por linha.

public int[] achaQntNumerosParesPorLinha(int[][] matriz){
		// criando o vetor que será retornado
		int[] retorno = new int[matriz.length]; 
		
		//for para percorrer as linhas
		for(int linha=0;linha<matriz.length;linha++){
			//for para percorrer as colunas
			for(int coluna=0;coluna<matriz[linha].length;coluna++){
				 //se o resto da divisão por dois for igual a zero
				if(matriz[linha][coluna]%2==0){
					//somo 1 à posição de indice igual ao valor
					//da váriavel linha
					retorno[linha]++;					
				}				
			}
		}				
		//Retorno o vetor
		return retorno;
	}

Se você quisesse números impares ao invés de pares bastaria mudar o
if(matriz[linha][coluna]%2==0){

para

if(matriz[linha][coluna]%2!=0){

(Assim como você observou …)

Ficou claro o código ???

Criado 29 de junho de 2009
Ultima resposta 30 de jun. de 2009
Respostas 15
Participantes 4