Matriz identidade

Como posso fazer para criar uma matriz de ordem [color=red]nxn[/color] onde só aparecerá 1 na diagonal principal e 0 nos restante da matriz? [color=blue](Tipo criar 2 for eu sei o problema é dentro, como q vai funcionar dentro do for).[/color]

vlw.

:smiley:

Quais são os elementos da matriz que recebem o valor 1? (Dica: só é preciso fazer 1 único “for” para preenchê-los.)

[quote=Rooney]Como posso fazer para criar uma matriz de ordem [color=red]nxn[/color] onde só aparecerá 1 na diagonal principal e 0 nos restante da matriz? [color=blue](Tipo criar 2 for eu sei o problema é dentro, como q vai funcionar dentro do for).[/color]

vlw.

:smiley:
[/quote]
Você já disse tudo. Dentro de um for verifique o seguinte:

  1. O elemento atual pertence à diagonal principal?
    1.a. Sim. Adiciono 1 na posição.
    1.b. Não. Adiciono 0 na posição.

Isso resolve seu problema. Agora como determinar se está na diagonal principal? Aí é com você (é simples).

[quote=marcobiscaro2112]
Você já disse tudo. Dentro de um for verifique o seguinte:

  1. O elemento atual pertence à diagonal principal?
    1.a. Sim. Adiciono 1 na posição.
    1.b. Não. Adiciono 0 na posição.

Isso resolve seu problema. Agora como determinar se está na diagonal principal? Aí é com você (é simples).[/quote]

Nem precisa verificar nada. Com um só for sabe que está a apanhar todos os elementos da diagonal principal, e é só colocar a 1.

[quote=pmlm][quote=marcobiscaro2112]
Você já disse tudo. Dentro de um for verifique o seguinte:

  1. O elemento atual pertence à diagonal principal?
    1.a. Sim. Adiciono 1 na posição.
    1.b. Não. Adiciono 0 na posição.

Isso resolve seu problema. Agora como determinar se está na diagonal principal? Aí é com você (é simples).[/quote]

Nem precisa verificar nada. Com um só for sabe que está a apanhar todos os elementos da diagonal principal, e é só colocar a 1. [/quote]
Verdade. Como, por padrão, os outros elementos são 0 fica mais fácil ainda!

Obrigado, havia esquecido.

Tentando de novo, mais simples ainda dessa vez:

O que indica que um elemento pertence à diagonal principal?

Respondendo isso é possível resolver o problema com um único for.

Quando um elemento está na diagonal principal? Quando sua linha é igual sua coluna.

Logo:

int[][] identidade = new int[4][4]; for (int linha = 0; i < identidade.length; linha++) { for (int col = 0; col < identidade[linha].length; col++) { identidade[linha][col] = linha == col ? 1 : 0; } }

Ahhhhhh Vini, vc acabou com a diversão =(
A gente tava querendo incentivar o pregu… usuário a descobrir sozinho isso…

na verdade vc precisa apenas fazer isso

int[][] m = new int[4][4]; for(i=0;i<m.length;i++) m[i][i] = 1;

pois os elementos não inicializados desse vetor terão valor 0 (por serem primitivos são inicializados com valor default).