• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

suzy

arrays mutimendiosionais e funçoes

5 mensagens neste tópico

:P tou a fazer este problema mas so me da lixo o outpot, ou seja endereços de memoria, como resolvo? :hmm:

15. Complete o seguinte programa:
#include <stdio.h>
#define L1 3
#define C1 2
#define L2 4
#define C2 3
void escreve(______________________, int lin, int col)
{
printf("\nFalta implementar a funcao\n");
}
int main()
{
int mat1[L1][C1]={{1,2},{3,4},{5,6}};
int mat2[L2][C2]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
printf("\nMatriz mat1:\n");
escreve(______, L1, C1);
printf("\nMatriz mat2:\n");
escreve(______, L2, C2);
return 0;
}

A função escreve() deve mostrar o conteúdo de uma matriz de inteiros na consola. A

função recebe como argumentos o endereço do primeiro elemento da matriz, o número de

linhas e o número de colunas.

Neste exemplo, o resultado será o seguinte:

Matriz mat1:

1 2

3 4

5 6

Matriz mat2:

1 2 3

4 5 6

7 8 9

10 11 12

tentei fazer assim






#include <stdio.h>
#define L1 3
#define C1 2
#define L2 4
#define C2 3



void escreve(int mat[][C1], int L1)
{
      int i,j;
      for (i= 0; i < L1; i++){
          
              for (j = 0; j<C1;j++){
              
    printf("%d\n",mat[i][j]);
          
       }
    }
}

        
main()
{
int mat1[L1][C1]={{1,2},{3,4},{5,6}};

printf("\nMatriz mat1:\n");
escreve(mat1, L1, C1);


fflush(stdin);
getchar();
}









tentei so para ver se dava a primeira matriz, mas nao da , ideias?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso funciona?

Na definição de escreve tens 2 parametros e na invocação tens 3.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso é muito esquesito. Tens aí vários erros.

Primeiro a assinatura da função escreve é diferente da que foi dada como exercício. A assinatura da função escreve no exercício recebe 3 argumentos, no qual os 2 últimos são int.

A tua função escreve recebe 2 argumentos em que só tem 1 int (o L1).

Depois não aconselho a chamares à variável de L1, já que tens uma macro definida com esse nome. Não sei como o compilador vai interpretar isso no pré-processamento, mas presumo que substitua esse L1 por 3.

Uma dica, olha que a assinatura da função no exercício dá-te 2 int, para representar o número de linhas e colunas. Usa-os em vez de fazeres directa ao L1 e C1, visto que dessa forma a tua função fica presa ao tamanho da matriz mat1, ou seja, quando fores usar a matriz mat2 não iria imprimir todos os valores.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se pegasses na assinatura que te foi dada inicialmente, não tinhas cometido tantos erros.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É muito frequente a solução ser o caminho mais simples que há, a mente humana tem tendência para complicar as coisas  ;)

As minhas sugestões são para começares com o problema que te é dado e usar os parâmetros que estão no problema, tal como já foi dito aqui nesta thread. Depois, se queres imprimir os valores que estão nessa matriz a função escreve deverá ter que saber em que posição de memória é que começa a matriz. Uma vez que já está no protótipo da função um inteiro para o número de linhas e um para o número de colunas, não é difícil escrever um ciclo que percorre toda a matriz e escreve os valores. Posto isto, acho que já consegues implementar a função escreve correctamente.

De qualquer forma, se tiveres mais dúvidas coloca as questões aqui.

P.S. - Não faças um fflush(stdin), pois fazer um fflush de uma stream de input não tem um comportamento pré-definido, e logo não é boa norma de programação (se quiseres saber mais, vê este site: http://www.gidnetwork.com/b-57.html).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora