Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Pulse

Matriz como parâmetro

Recommended Posts

#include <stdio.h>

void multiplica(int, int *);

int main ()
{
    int m[3][3], y, l, c;

    puts("Digite um numero");
    scanf("%d", &y);

    for(l=0; l<3; l++)
    {
        for(c=0; c<3; c++)
        {
            scanf("%d", &m[l][c]);
        }
    }

    multiplica(y, m);
}

void multiplica(int y, int *m1)
{
    int l, c;

    for(l=0; l<3; l++)
    {
        for(c=0; c<3; c++)
        {
            m1[l][c] *= y;
        }
    }

        for(l=0; l<3; l++)
    {
        for(c=0; c<3; c++)
        {
            printf("%d ", m1[l][c]);
        }
        printf("\n");
    }

}


Preciso passar um valor e uma matriz como parâmetro para uma função e depois multiplicar todos os termos da matriz pelo valor. O que tem de errado no código? Ele funciona quando uso um vetor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

multiplica.c: In function ‘main’:

multiplica.c:20:5: warning: passing argument 2 of ‘multiplica’ from incompatible pointer type [enabled by default]
multiplica(y, m);
^
multiplica.c:3:6: note: expected ‘int *’ but argument is of type ‘int (*)[3]’
void multiplica(int, int *);
^
multiplica.c: In function ‘multiplica’:
multiplica.c:31:18: error: subscripted value is neither array nor pointer nor vector
m1[l][c] *= y;
^
multiplica.c:39:32: error: subscripted value is neither array nor pointer nor vector
printf("%d ", m1[l][c]);

 

Use nomes que signifiquem alguma coisa.

#include <stdio.h>
#define MAX 3

void multiplica(int n, int matriz[][MAX]);
void imprime(int matriz[][MAX]);

int main (void) {
    int matriz[MAX][MAX];
    int multiplicador;

    puts("Digite um numero");
    scanf("%d", &multiplicador);

    puts("Informe a matriz:");
    int linha, coluna;
    for(linha=0; linha<MAX; linha++) {
        for(coluna=0; coluna<MAX; coluna++) {
            scanf("%d", &matriz[linha][coluna]);
        }
    }

    multiplica(multiplicador, matriz);
    imprime(matriz);
    return 0;
}

void multiplica(int n, int matriz[][MAX]) {
    for(int linha=0; linha<MAX; linha++) {
        for(int coluna=0; coluna<MAX; coluna++) {
            matriz[linha][coluna] = n * matriz[linha][coluna];
        }
    }
}

void imprime(int matriz[][MAX]) {
    for(int linha=0; linha<MAX; linha++) {
        for(int coluna=0; coluna<MAX; coluna++) {
            printf("%d%c", matriz[linha][coluna], (coluna==MAX-1)?'\n':' ');
        }
    }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.