Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Fabi221995

Java Zerar Linha e Coluna de matriz em Java

Recommended Posts

Estou com dúvidas na questão que o professor passou na aula.

Zerar linha e coluna.

Escrever um algoritmo que, dado uma matriz 'm x n ', se um elemento dessa matriz é zero, toda linha e coluna que contém zero tem que ser zerada.

 

isso foi tudo que fiz agora, e travei

 

		Scanner linha = new Scanner(System.in);
        int Nlinhas = linha.nextInt();
        Scanner coluna = new Scanner(System.in);
        int Ncoluna = coluna.nextInt();

        int[][] matriz = new int[Nlinhas][Ncoluna];

        Scanner numero = new Scanner(System.in);
        int numeroI;

        //entradas da matriz
        for (int i = 0; i < Nlinhas; i++) {
            for (int j = 0; j < Ncoluna; j++) {
                matriz[i][j] = numero.nextInt();
            }
        }

        
        for (int i = 0; i < Nlinhas; i++) {
            for (int j = 0; j < Ncoluna; j++) {
                if(matriz[i][j] == 0){
                    zeraLinhaColuna(i,j,matriz);
                }
            }
        }

    }

    private static void zeraLinhaColuna(int i, int j, int[][] matriz) {
    }

podem dar uma ajuda?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como é de aula, e o professor vai querer que você pense na solução, não vou colocar ela completa, mas deixarei bem encaminhada:

 

O que você precisa fazer nesse método em branco seria:

  1. Copiar a matriz original para outro local
  2. Varrer a matriz original em busca dos 0's
    1. Encontrando algum 0, na cópia, zerar linha e coluna
  3. Retornar a nova matriz.

É preciso fazer essa cópia pois, se não fizer isso, numa matriz 3x3 onde o primeiro elemento apenas que é 0, após zerar a linha e coluna dele, ao buscar o próximo item, este também ficaria com 0.

 

Vou deixar o esqueleto, sem a implementação que fiz, para adiantar. Note também que você só precisa de um único objeto Scanner, e este pode ser reutilizado por todo o código onde você for ler a entrada, e também não se esqueça de fechá-lo após o uso.

 

package com.dudaskank.cdh;

import java.util.Scanner;

/**
 * https://www.clubedohardware.com.br/forums/topic/1282607-zerar-linha-e-coluna-de-matriz-em-java/
 * 
 */
public class ZeraMatriz {

    public static void main(String[] args) {
        // linha e coluna
        Scanner scanner = new Scanner(System.in);
        System.out.println("Linhas? ");
        int nLinhas = scanner.nextInt();
        System.out.println("Colunas? ");
        int nColunas = scanner.nextInt();

        int[][] matriz = new int[nLinhas][nColunas];

        // entradas da matriz
        for (int i = 0; i < nLinhas; i++) {
            for (int j = 0; j < nColunas; j++) {
                System.out.printf("Número da posição %d %d: ", i + 1, j + 1);
                matriz[i][j] = scanner.nextInt();
            }
        }

        // imprime matriz
        System.out.println("Matriz atual:");
        imprimeMatriz(nLinhas, nColunas, matriz);

        // processa matriz
        int[][] matrizZerada = processaMatriz(nLinhas, nColunas, matriz);
        System.out.println("Matriz processada:");
        imprimeMatriz(nLinhas, nColunas, matrizZerada);

        scanner.close();
    }

    private static void imprimeMatriz(int nLinhas, int nColunas, int[][] matriz) {
        for (int i = 0; i < nLinhas; i++) {
            for (int j = 0; j < nColunas; j++) {
                System.out.printf("%d ", matriz[i][j]);
            }
            System.out.println();
        }
    }

    private static int[][] processaMatriz(int nLinhas, int nColunas, int[][] matriz) {
        // nova matriz que será retornada
        int[][] matrizNova = new int[nLinhas][nColunas];

        // primeiro, faz uma cópia

        // depois, varre a matriz original buscando os 0s, se encontrar, zera linha e
        // coluna correspondente na matriz nova

        // no fim, retorna o resultado que ficou na matriz nova
        return matrizNova;
    }
}

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×