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();
}
}
- 0 1 2
1 99 3
2 3 4
0 1 2
1 99 3
2 3 4
- 0 99 2
99 2 99
2 99 4
0 99 2
99 2 99
2 99 4
- 0 1 2
1 2 3
2 3 4
0 1 2
1 2 3
2 3 4
- 0 1 2
1 99 3
2 3 4
0 1 2
1 2 3
2 3 4
- 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