Informática, perguntado por costinhabruno8, 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.VEJA O ARQUIVO

Anexos:

Soluções para a tarefa

Respondido por Index
1
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:
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:

costinhabruno8: Existe alguma maneira de transformar uma estrutura ENQUANTO em uma estrutura REPITA? E uma estrutura PARA em uma estrutura ENQUANTO? E uma estrutura PARA em uma REPITA? Demonstre como é possível em cada um dos casos que a resposta for positiva.
costinhabruno8: obrigadeiro , minha cabaça quase explodia!
costinhabruno8: num to entendendo essa materia nem a pau! me indica alguma coisa legal aí! por favor!
Perguntas interessantes