Jump to content

arrays mutimendiosionais e funçoes


suzy

Recommended Posts

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

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?

Link to comment
Share on other 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.

"Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !"

Sign on a computer system consultant's desk

Link to comment
Share on other 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).

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.