Informática, perguntado por rrrl, 1 ano atrás

Escreva um algoritmo que imprima na tela uma matriz 10 x 10 formada por colunas contendo elementos de 0 a 9 e uma matriz também 10 x 10 contendo linhas de elementos de 0 a 9.

Saída esperada:
0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1
2 2 2 2 2 2 2 2 2 2
3 3 3 3 3 3 3 3 3 3
4 4 4 4 4 4 4 4 4 4
5 5 5 5 5 5 5 5 5 5
6 6 6 6 6 6 6 6 6 6
7 7 7 7 7 7 7 7 7 7
8 8 8 8 8 8 8 8 8 8
9 9 9 9 9 9 9 9 9 9

0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9

Soluções para a tarefa

Respondido por Index
24
Antes de tudo, precisamos ter em mente que:
- a estrutura de repetição mais EXTERNA refere-se a as LINHAS da matriz
- a estrutura de repetição mais INTERNA refere-se a as COLUNAS da matriz

Nesse algoritmo usarei a estrutura "para" por ser mais fácil de escrever

Bom, pra forçar a primeira saída temos que pensar no seguinte:
"quando mudar de linha o valor deverá ser incrementado".

Como fazer?

Declarando a matriz:
matriz[9][9] inteiro

Declarando a linha e coluna:
linha, coluna inteiro

Declarando uma variável contador:
i inteiro

Vamos construir a estrutura necessária para a matriz:

para linha de 0 ate 9 faca
    para coluna de 0 ate 9 faca
        escreva(matriz[linha,coluna])
    fimpara
fimpara

Por enquanto a matriz está zerada!

Agora temos que incrementar o valor toda vez que ela mudar de linha. Uma forma melhor de pensar é: toda vez que ela sair da estrutura da coluna, ou seja, sair do "para" mais interno

Vamos dizer que na posição "linha,coluna" nossa matriz irá receber o valor de i

Agora temos que incrementar o valor de i toda vez que ele sair do "para" mais interno. Ficaria assim:

para linha de 0 ate 9 faca
    para coluna de 0 ate 9 faca
        matriz[linha][coluna] ← i
        escreva(matriz[linha,coluna])
    fimpara
    i ← i + 1
fimpara

É assim que a mágica acontece!

//////////////////////////////////////////////////////////////////////////////////////////////

Pra forçar a segunda é ainda mais fácil. Por quê? Analise a primeira matriz com a segunda. É a mesma coisa. Mas agora o valor deverá ser incrementado na coluna, ou seja, no "para" mais interno.

Ficaria assim:

para linha de 0 ate 9 faca
    para coluna de 0 ate 9 faca
        matriz[linha][coluna] ← i
        escreva(matriz[linha,coluna])
        i ← i + 1
    fimpara
fimpara

Mas ainda não terminamos, porque precisos que o valor de i seja "resetado" toda vez que ele mudar de linha, ou seja, sair do "para" mais interno.

Agora sim terminamos:

para linha de 0 ate 9 faca
    para coluna de 0 ate 9 faca
        matriz[linha][coluna] ← i
        escreva(matriz[linha,coluna])
        i ← i + 1
    fimpara
    i ← 0
fimpara

Segue abaixo os algoritmos feitos no VisuAlg


Anexos:
Respondido por pedrim58
2

1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,68762537648762476

Perguntas interessantes