FC ConcursosFC Concursos

Questão FC266310

O seguinte código em CH trata matrizes com estruturas. Avalie o código e assinale a alternativa que apresenta a impressão na console. using System; struct Matriz( public int[,] val

Questões sem classificação de assunto (TI - Desenvolvimento de Sistemas)

IDECAN · 2024

O seguinte código em CH trata matrizes com estruturas. Avalie o código e assinale a alternativa que apresenta a impressão na console.

 

using System;
struct Matriz(
    public int[,] valores;
    public Matriz(int tamanho)(
          valores = new int[tamanho, tamanho];
           for (int i = 0; i < tamanho; i++)(
                 for (int j = 0; j < tamanho; j++)(
                       valores[i, j] = i+ 5;
                 }
          }

}
public void AlterarElemento(int i, int 5, int valor)(
       valores[i, j] = valor;
public void MostrarMatriz()(
       for (int i = 0; i < valores.GetLength(0); i+-+)f
             for (int j = O; j < valores.GetLength(1); j++)f
                    Console.Write(valores[i, j] + " "3;
             }
            Console.writeLine();
       }
  }

}
class Program(
      static void Main()f
            Matriz ml = new Matriz(3);
            Matriz m2 = m1;
           m2.AlterarElemento(1, 1, 99);
           m1.MostrarMatriz();
          m2.MostrarMatriz();
     }
}

 

  1. 0 1 2

        1 99 3

        2 3 4

        0 1 2

       1 99 3

       2 3 4

  2. 0 99 2

        99 2 99

        2 99 4

        0 99 2

        99 2 99

        2 99 4

  3. 0 1 2

        1 2 3

        2 3 4

        0 1 2

       1 2 3

        2 3 4

  4. 0 1 2

        1 99 3

        2 3 4

        0 1 2

       1 2 3

       2 3 4

  5. 0 1 2

        1 2 3

        2 3 4

       0 1 2

       1 99 3

       2 3 4

Mostrar resposta e comentário

Gabarito

A

Comentário do professor

O construtor preenche a matriz com a regra \(valores[i,j] = i + j\), portanto as linhas iniciais são 0 1 2, 1 2 3 e 2 3 4 (índices começando em zero).

Como Matriz é um struct (tipo-valor), a atribuição m2 = m1 copia os campos. Contudo, o campo valores é um array bidimensional, que é um tipo de referência; a cópia do struct replica a referência ao mesmo array, não duplica os dados.

Assim, ao executar m2.AlterarElemento(1,1,99) altera o elemento [1,1] do mesmo array compartilhado. Consequentemente, tanto m1.MostrarMatriz() quanto m2.MostrarMatriz() exibem a matriz com o elemento central modificado, produzindo:

0 1 2
1 99 3
2 3 4
0 1 2
1 99 3
2 3 4

Conteúdo do catálogo FC Concursos · Atualizado em

Continue aprendendo