Ao clicar em "Abrir Exemplos" > "Vetores e Matrizes" > Diagonal Principal
o código que é aberto está com um problema na linha 70, a função preenche(caracter &matriz[][]) está recebendo um ponteiro duplo (ponteiro do ponteiro que aponta para o endereço de memoria que se inicia o array/matriz) e por isso não está funcionando corretamente o algoritmo.
para corrigir o problema é só remover o caractere &, para que não haja um ponteiro duplo, pois acredito que a variavel matriz[][] já é um ponteiro que aponta para o endereço de memoria que se inicia o array/matriz, dessa forma: função preenche(caracter matriz[][]) é a linha de comando correta
/* CLIQUE NO SINAL DE "+", À ESQUERDA, PARA EXIBIR A DESCRIÇÃO DO EXEMPLO
*
* Copyright (C) 2014 - UNIVALI - Universidade do Vale do Itajaí
*
* Este arquivo de código fonte é livre para utilização, cópia e/ou modificação
* desde que este cabeçalho, contendo os direitos autorais e a descrição do programa,
* seja mantido.
*
* Se tiver dificuldade em compreender este exemplo, acesse as vídeoaulas do Portugol
* Studio para auxiliá-lo:
*
* https://www.youtube.com/watch?v=K02TnB3IGnQ&list=PLb9yvNDCid3jQAEbNoPHtPR0SWwmRSM-t
*
* Descrição:
*
* Este exemplo ilustra o uso das matrizes na linguagem Portugol criando uma matriz
* e preenchendo sua diagonal principal.
*
* As matrizes nada mais são do que vetores de duas dimensões (bidimensionais). Em
* outras palavras, a matriz é um vetor aonde cada uma de suas posições (colunas)
* armazena um outro vetor (linhas).
*
* Exemplo de vetor:
*
* [1, 2, 3]
*
* Exemplo de matriz:
*
* [1][2][3]
* [4][5][6]
* [7][8][9]
*
* Na matemática, a diagonal principal de uma matriz é o conjunto dos elementos em que
* a linha e a coluna do elemento são iguais. Assim, a diagonal principal parte do canto
* superior esquerdo (posição 0,0) e segue para a direita e para abaixo até encontrar o
* lado direito ou o lado inferior da matriz. No exemplo abaixo, a diagonal principal é
* representada pelo caracter '*':
*
* [*][ ][ ][ ]
* [ ][*][ ][ ]
* [ ][ ][*][ ]
* [ ][ ][ ][*]
*
* Autores:
*
* Giordana Maria da Costa Valle
* Carlos Alexandre Krueger
*
* Data: 01/06/2013
*/
programa
{
inclua biblioteca Util --> u
funcao inicio()
{
// Define as dimensões (linhas e colunas) da matriz
const inteiro TAMANHO = 5
// Cria a matriz
caracter matriz[TAMANHO][TAMANHO]
preenche(matriz)
exibe(matriz)
}
// Preenche a diagonal principal da matriz
funcao preenche(caracter &matriz[][])
{
para (inteiro linha = 0; linha < u.numero_linhas(matriz); linha++)
{
para (inteiro coluna = 0; coluna < u.numero_colunas(matriz); coluna++)
{
se (linha == coluna)
{
matriz[linha][coluna] = '*'
}
senao
{
matriz[linha][coluna] = ' '
}
}
}
}
// Percorre e exibe a matriz
funcao exibe(caracter matriz[][])
{
para (inteiro linha = 0; linha < u.numero_linhas(matriz); linha++)
{
para (inteiro coluna = 0; coluna < u.numero_colunas(matriz); coluna++)
{
escreva("[", matriz[linha][coluna], "]")
}
escreva("\n")
}
}
}
Comentários adicionais
na linha 70, troque funcao preenche(caracter &matriz[][]) por funcao preenche(caracter matriz[][]) para corrigir o problema
Descrição do problema
Ao clicar em "Abrir Exemplos" > "Vetores e Matrizes" > Diagonal Principal
o código que é aberto está com um problema na linha 70, a
função preenche(caracter &matriz[][])
está recebendo um ponteiro duplo (ponteiro do ponteiro que aponta para o endereço de memoria que se inicia o array/matriz) e por isso não está funcionando corretamente o algoritmo.para corrigir o problema é só remover o caractere &, para que não haja um ponteiro duplo, pois acredito que a variavel
matriz[][]
já é um ponteiro que aponta para o endereço de memoria que se inicia o array/matriz, dessa forma:função preenche(caracter matriz[][])
é a linha de comando corretahttps://gyazo.com/2785141a02a935a8aac6966328473379
Código
Comentários adicionais
na linha 70, troque
funcao preenche(caracter &matriz[][])
porfuncao preenche(caracter matriz[][])
para corrigir o problema