Ir para conteúdo
Fórum Script Brasil
  • 0

Exercicio de função


Henrike

Pergunta

Bom dia,

Estou com um problema em um exercicio de matriz porem com função, terei uma prova segunda e tenho certeza que caira algo do tipo.

#include <stdio.h>
#include <stdlib.h>
#define linha 3
#define coluna 3


int soma(int[][]);
int matriz[linha][coluna];
int main()
{
    int clin, ccol, result;


    for(clin=0; clin<linha; clin++)
    {
        for(ccol=0; ccol<coluna; ccol++)
        {
            printf("Digite o valor: ");
            scanf("%i", &matriz[clin][ccol]);
        }
    }
    result=soma(matriz);
    printf("O valor da soma da matriz e': %i", result);
    system("pause");
    return 0;

}

int soma(int matriz[][])
{
    int result=0, clin, ccol;
    for(clin=0; clin<linha; clin++)
    {
        for(ccol=0; ccol<coluna; ccol++)
        {
            result=result+matriz[clin][ccol];
        }
    }
    return result;
}
Ele não executa o programa e declara que existe o seguinte erro:
o\main.c||In function `soma':|
o\main.c|36|error: invalid use of array with unspecified bounds|
||=== Build finished: 1 errors, 0 warnings ===|
já tentei de tudo mas não vai, a função deveria somar os valores da matriz e imprimir na função main o erro que ele declara da linha 36 é sobre isso:
result=result+matriz[clin][ccol];

, se alguém poder me ajudar ficarei muito grato.

Abraço

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Acho que você deveria trocar o nome da variável na função (global = local, embora isso talvez não devesse causar problemas, ou troque a matriz global para local na main) e, talvez, utilizar int **matriz.

Porém não tenho muito conhecimento em arrays multidimensionais, além de como são guardadas na memória.

Pelo jeito, nunca utilizei.

Abraços.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Henrike.

Eu executei o seu código aqui com a dica do Durub e funcionou. O seu código ficou assim.

#include <stdio.h>
#include <stdlib.h>
#define linha 3
#define coluna 3

int soma(int[linha][coluna]);
int matriz[linha][coluna];
int main()
{
    int clin, ccol, result;


    for(clin=0; clin<linha; clin++)
    {
        for(ccol=0; ccol<coluna; ccol++)
        {
            printf("Digite o valor: ");
            scanf("%i", &matriz[clin][ccol]);
        }
    }
    result=soma(matriz);
    printf("O valor da soma da matriz e': %i", result);
    system("pause");
    return 0;

}

int soma(int matriz[linha][coluna])
{
    int result=0, clin, ccol;
    for(clin=0; clin<linha; clin++)
    {
        for(ccol=0; ccol<coluna; ccol++)
        {
            result=result+matriz[clin][ccol];
        }
    }
    return result;
}

O motivo do erro é porque o compilador precisa saber quanto de memória ele precisa alocar, por isso você deve informar o tamanho da matriz, mesmo quando for passar para uma função.

Agora você deveria declarar "matriz[][]" como local em main, não precisava ser global.

Abraço.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...