dgadelha / Portugol-Webstudio

IDE online para o Portugol
https://portugol.dev
GNU General Public License v3.0
274 stars 59 forks source link

Manipulação de Matriz com Funções em Portugol #333

Closed Schddar closed 2 weeks ago

Schddar commented 2 weeks ago

Descrição do problema

não está a executar o programa

Código

programa {
  funcao inicio() {
    // Definindo a matriz com os valores fornecidos
    inteiro matriz[10][10] = 
    {
      {1, 2, 3, 4, 5, 6, 7, 8, 9, 10},
      {10, 9, 8, 7, 6, 5, 4, 3, 2, 1},
      {1, 2, 3, 4, 5, 6, 7, 8, 9, 10},
      {10, 9, 8, 7, 6, 5, 4, 3, 2, 1},
      {1, 2, 3, 4, 5, 6, 7, 8, 9, 10},
      {10, 9, 8, 7, 6, 5, 4, 3, 2, 1},
      {1, 2, 3, 4, 5, 6, 7, 8, 9, 10},
      {10, 9, 8, 7, 6, 5, 4, 3, 2, 1},
      {1, 2, 3, 4, 5, 6, 7, 8, 9, 10},
      {10, 9, 8, 7, 6, 5, 4, 3, 2, 1}
    }

    // Exemplos de chamada das funções
    escreva("Soma de todos os elementos: ", somaElementos())
    escreva("Produto dos elementos da diagonal principal: ", produtoDiagonalPrincipal())
    escreva("Soma da diagonal secundária: ", somaDiagonalSecundaria())
    escreva("Média da última coluna: ", mediaUltimaColuna())
    escreva("Maior elemento da matriz: ", maiorElemento())
    escreva("Menor elemento da matriz: ", menorElemento())
    escreva("Soma da última linha: ", somaUltimaLinha())
    escreva("Produto dos elementos da primeira linha: ", produtoPrimeiraLinha())
    escreva("Soma da primeira coluna: ", somaPrimeiraColuna())
    escreva("Média da diagonal principal: ", mediaDiagonalPrincipal())
  }

  // Função 1: Soma de todos os elementos da matriz
  funcao somaElementos() {
    inteiro soma = 0
    para (inteiro i = 0; i < 10; i++) {
      para (inteiro j = 0; j < 10; j++) {
        soma = soma + matriz[i][j]
      }
    }
    retorne soma
  }

  // Função 2: Produto dos elementos da diagonal principal
  funcao produtoDiagonalPrincipal() {
    inteiro produto = 1
    para (inteiro i = 0; i < 10; i++) {
      produto = produto * matriz[i][i] // Diagonal principal: i == j
    }
    retorne produto
  }

  // Função 3: Soma dos elementos da diagonal secundária
  funcao somaDiagonalSecundaria() {
    inteiro soma = 0
    para (inteiro i = 0; i < 10; i++) {
      soma = soma + matriz[i][9 - i] // Diagonal secundária: i + j = 9
    }
    retorne soma
  }

  // Função 4: Média dos elementos da última coluna
  funcao mediaUltimaColuna() {
    real soma = 0
    para (inteiro i = 0; i < 10; i++) {
      soma = soma + matriz[i][9] // Última coluna: j = 9
    }
    retorne soma / 10
  }

  // Função 5: Maior elemento da matriz
  funcao maiorElemento() {
    inteiro maior = matriz[0][0]
    para (inteiro i = 0; i < 10; i++) {
      para (inteiro j = 0; j < 10; j++) {
        se (matriz[i][j] > maior) {
          maior = matriz[i][j]
        }
      }
    }
    retorne maior
  }

  // Função 6: Menor elemento da matriz
  funcao menorElemento() {
    inteiro menor = matriz[0][0]
    para (inteiro i = 0; i < 10; i++) {
      para (inteiro j = 0; j < 10; j++) {
        se (matriz[i][j] < menor) {
          menor = matriz[i][j]
        }
      }
    }
    retorne menor
  }

  // Função 7: Soma dos elementos da última linha
  funcao somaUltimaLinha() {
    inteiro soma = 0
    para (inteiro j = 0; j < 10; j++) {
      soma = soma + matriz[9][j] // Última linha: i = 9
    }
    retorne soma
  }

  // Função 8: Produto dos elementos da primeira linha
  funcao produtoPrimeiraLinha() {
    inteiro produto = 1
    para (inteiro j = 0; j < 10; j++) {
      produto = produto * matriz[0][j] // Primeira linha: i = 0
    }
    retorne produto
  }

  // Função 9: Soma dos elementos da primeira coluna
  funcao somaPrimeiraColuna() {
    inteiro soma = 0
    para (inteiro i = 0; i < 10; i++) {
      soma = soma + matriz[i][0] // Primeira coluna: j = 0
    }
    retorne soma
  }

  // Função 10: Média dos elementos da diagonal principal
  funcao mediaDiagonalPrincipal() {
    real soma = 0
    para (inteiro i = 0; i < 10; i++) {
      soma = soma + matriz[i][i] // Diagonal principal: i == j
    }
    retorne soma / 10
  }
}

Comentários adicionais

programa em Portugol que inicialize uma matriz de 10x10 com valores predefinidos e implemente 10 funções para realizar diferentes operações matemáticas sobre a matriz. Cada função deve retornar um número específico derivado da operação aplicada, e este número deve ser verificável como resposta, em um campo de entrada de número, nesse questinário.

dgadelha commented 2 weeks ago

Olá,

É necessário declarar a matriz em um escopo que seja acessível pelas funções, podendo ficar no escopo do programa. Além disso, é necessário definir o tipo de retorno das funções.

Segue o código corrigido:

programa {
  // Definindo a matriz com os valores fornecidos
  inteiro matriz[10][10] = 
  {
    {1, 2, 3, 4, 5, 6, 7, 8, 9, 10},
    {10, 9, 8, 7, 6, 5, 4, 3, 2, 1},
    {1, 2, 3, 4, 5, 6, 7, 8, 9, 10},
    {10, 9, 8, 7, 6, 5, 4, 3, 2, 1},
    {1, 2, 3, 4, 5, 6, 7, 8, 9, 10},
    {10, 9, 8, 7, 6, 5, 4, 3, 2, 1},
    {1, 2, 3, 4, 5, 6, 7, 8, 9, 10},
    {10, 9, 8, 7, 6, 5, 4, 3, 2, 1},
    {1, 2, 3, 4, 5, 6, 7, 8, 9, 10},
    {10, 9, 8, 7, 6, 5, 4, 3, 2, 1}
  }

  funcao inicio() {
    // Exemplos de chamada das funções
    escreva("\nSoma de todos os elementos: ", somaElementos())
    escreva("\nProduto dos elementos da diagonal principal: ", produtoDiagonalPrincipal())
    escreva("\nSoma da diagonal secundária: ", somaDiagonalSecundaria())
    escreva("\nMédia da última coluna: ", mediaUltimaColuna())
    escreva("\nMaior elemento da matriz: ", maiorElemento())
    escreva("\nMenor elemento da matriz: ", menorElemento())
    escreva("\nSoma da última linha: ", somaUltimaLinha())
    escreva("\nProduto dos elementos da primeira linha: ", produtoPrimeiraLinha())
    escreva("\nSoma da primeira coluna: ", somaPrimeiraColuna())
    escreva("\nMédia da diagonal principal: ", mediaDiagonalPrincipal())
  }

  // Função 1: Soma de todos os elementos da matriz
  funcao inteiro somaElementos() {
    inteiro soma = 0
    para (inteiro i = 0; i < 10; i++) {
      para (inteiro j = 0; j < 10; j++) {
        soma = soma + matriz[i][j]
      }
    }
    retorne soma
  }

  // Função 2: Produto dos elementos da diagonal principal
  funcao inteiro produtoDiagonalPrincipal() {
    inteiro produto = 1
    para (inteiro i = 0; i < 10; i++) {
      produto = produto * matriz[i][i] // Diagonal principal: i == j
    }
    retorne produto
  }

  // Função 3: Soma dos elementos da diagonal secundária
  funcao inteiro somaDiagonalSecundaria() {
    inteiro soma = 0
    para (inteiro i = 0; i < 10; i++) {
      soma = soma + matriz[i][9 - i] // Diagonal secundária: i + j = 9
    }
    retorne soma
  }

  // Função 4: Média dos elementos da última coluna
  funcao real mediaUltimaColuna() {
    real soma = 0
    para (inteiro i = 0; i < 10; i++) {
      soma = soma + matriz[i][9] // Última coluna: j = 9
    }
    retorne soma / 10
  }

  // Função 5: Maior elemento da matriz
  funcao inteiro maiorElemento() {
    inteiro maior = matriz[0][0]
    para (inteiro i = 0; i < 10; i++) {
      para (inteiro j = 0; j < 10; j++) {
        se (matriz[i][j] > maior) {
          maior = matriz[i][j]
        }
      }
    }
    retorne maior
  }

  // Função 6: Menor elemento da matriz
  funcao inteiro menorElemento() {
    inteiro menor = matriz[0][0]
    para (inteiro i = 0; i < 10; i++) {
      para (inteiro j = 0; j < 10; j++) {
        se (matriz[i][j] < menor) {
          menor = matriz[i][j]
        }
      }
    }
    retorne menor
  }

  // Função 7: Soma dos elementos da última linha
  funcao inteiro somaUltimaLinha() {
    inteiro soma = 0
    para (inteiro j = 0; j < 10; j++) {
      soma = soma + matriz[9][j] // Última linha: i = 9
    }
    retorne soma
  }

  // Função 8: Produto dos elementos da primeira linha
  funcao inteiro produtoPrimeiraLinha() {
    inteiro produto = 1
    para (inteiro j = 0; j < 10; j++) {
      produto = produto * matriz[0][j] // Primeira linha: i = 0
    }
    retorne produto
  }

  // Função 9: Soma dos elementos da primeira coluna
  funcao inteiro somaPrimeiraColuna() {
    inteiro soma = 0
    para (inteiro i = 0; i < 10; i++) {
      soma = soma + matriz[i][0] // Primeira coluna: j = 0
    }
    retorne soma
  }

  // Função 10: Média dos elementos da diagonal principal
  funcao real mediaDiagonalPrincipal() {
    real soma = 0
    para (inteiro i = 0; i < 10; i++) {
      soma = soma + matriz[i][i] // Diagonal principal: i == j
    }
    retorne soma / 10
  }
}