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

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;//

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

oq vai dentro do if?
como fica o resto?

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?

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!

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:

tipo isso


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

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

?

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…

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;

    }

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

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.

numero de pares em cada coluna da matriz

isso é o q pede

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.

mto obrigado, era isso mesmo

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

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

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

isso?

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 ???