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

Somando Matrizes


Guest - Marcel -

Pergunta

Guest - Marcel -

olah colegas, :)

alguém sabe como faco a atribuicao da funcao na main abaixo ? está dando erro de compilacao lá e tambem no retorno da funcao :o . Sabe como corrijo esses erros ? :blink:


#include<stdio.h>


int [][]somaMatriz(int a[][], int b[][], int n);


int
main()
{
    int a[2][2] = {{1,2},{3,4}},
        b[2][2] = {{1,5},{4,2}},
        c[2][2];

    c = somaMatriz(a, b, 2);
    
}


int [][]
somaMatriz(int a[][], int b[][], int n)
{
    int i,
        j,
    k,
    w;

    for(i=0; i<n; i++)
    for(j=0; j<n; j++)
        a[i][j] = a[i][j] + b[i][j];

    return a;
}


Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Ao passar arrays multidimensionais para uma função, na definição da função você deve colocar o tamanho das dimensões que vêm depois da primeira. Por exemplo, a função

void f( int[][ 3 ] );
recebe uma matriz de n linhas e 3 colunas. Seria possível fazer também
void f( int[ 3 ][ 3 ] );
no caso de a função receber uma matriz de tamanho fixo. Isso ocorre desta forma porque os elementos de um array (seja ele unidimensional ou multidimensional) são armazenados seqüencialmente na memória, e o compilador precisa saber quantos elementos saltar quando um elemento do tipo
array[ 2 ][ 7 ]
é referenciado. Quanto ao retorno, visto que arrays são passados por referência, o seu resultado já está armazenado na matriz a. Se quiser algo mais claro faça uma função assim:
void SomaMatriz( int a[][ 2 ], int b[][ 2 ], int c[][ 2 ], int n )
{
    ...

    for( i=0; i<n; i++ )
        for( j=0; j<n; j++ )
            c[ i ][ j ] = a[ i ][ j ] + b[ i ][ j ];

    ...
}

Dessa forma a matriz onde o resultado será armazenado também é passada para a função, e nela o resultado será armazenado.

Tente representar as suas matrizes n por m como arrays unidimensionais de dimensão nm, e adapte o seu algoritmo.

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...