suzy Posted November 22, 2007 at 12:13 AM Report Share #149284 Posted November 22, 2007 at 12:13 AM 😛 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 More sharing options...
shumy Posted November 22, 2007 at 12:23 AM Report Share #149285 Posted November 22, 2007 at 12:23 AM Isso funciona? Na definição de escreve tens 2 parametros e na invocação tens 3. Aqui há coisa de 2 anos fazia umas malhas de croché, depois fartei-me e fui para informática! Link to comment Share on other sites More sharing options...
Betovsky Posted November 22, 2007 at 12:25 AM Report Share #149286 Posted November 22, 2007 at 12:25 AM 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 More sharing options...
Rui Carlos Posted November 22, 2007 at 10:38 AM Report Share #149319 Posted November 22, 2007 at 10:38 AM Se pegasses na assinatura que te foi dada inicialmente, não tinhas cometido tantos erros. Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
mrentes Posted November 22, 2007 at 11:03 PM Report Share #149552 Posted November 22, 2007 at 11:03 PM É 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now