Envio de matriz para uma função em C

AmigoDaSorna

Power Member
Boa tarde.

Estou aqui a debater-me com uma questão em C, tenho um programa e numa função inicio uma matriz de três dimensões a zero. Retorno a função a mani() e volto a envia-la para uma outra função que a vai mostrar o seu conteúdo. Quando velo o conteúdo desta em vez de mostrar so zeros, mostra 01010101010101. experimentei mostrar a matriz na função main e aparece tudo a zero por isso posso supor que a atribuição á matriz esta a ser feita de forma correcta. Os meus vagos conhecimentos são de C++ e não de C. e já fiz esta operação em C++ e correu td bem.
Alguém me sabe dizer o que estou a fazer mal?

Código:
//---------------------------------------------------------------------------
#include <stdio.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
int mostrar_erro_menu();
int matriz_a_zero(int matriz[12][10][2]);
int apresentar_inforamcao(int matriz[12][10][2]);
int main(int argc, char* argv[])
{
 char op_menu;
 int bd_geradores[12][10][2];
 bd_geradores [12][10][2]= matriz_a_zero(bd_geradores);
 do
 {
  printf("************************ Menu Principal ************************\n");
  printf("R - Registar numero de horas de funcionamento.\n");
  printf("T - Registar consumo mensal.\n");
  printf("A - Apresentação de informacao.\n");
  printf("E - Estatistica.\n");
  printf("S - Sair.\n");
  printf("Seleccione opçao: _");
  op_menu=getch();
  system("cls");
  switch ( op_menu )
  {
  case 'r':
     //
   break;
  case 'R':
     //
   break;
  case 't':
     //
   break;
  case 'T':
     //
   break;
  case 'a':
     apresentar_inforamcao(bd_geradores);
     op_menu='+';
   break;
  case 'A':
     apresentar_inforamcao(bd_geradores);
     op_menu='+';
   break;
  case 'e':
     //
   break;
  case 'E':
     //
   break;
  case 's':
     return 0;
   break;
  case 'S':
     return 0;
   break;
  default:
   mostrar_erro_menu();
   break;
  }
 }while((op_menu!='r')&&(op_menu!='t')&&
 (op_menu!='a')&&(op_menu!='e')&&
 (op_menu!='s')&&(op_menu!='R')&&
 (op_menu!='T')&&(op_menu!='A')&&
 (op_menu!='E')&&(op_menu!='S'));
 return 0;
}
//---------------------------------------------------------------------------
int mostrar_erro_menu()
{
 printf("\nAVISO: Opcao Invalida\nQualquer tecla para continuar");
 getch();
 system("cls");
 return 0;
}
int matriz_a_zero(int matriz[12][10][2])
{
 int i,j,z;
 for (i = 0; i < 12; i++)
 {
  for (j = 0; j < 10; j++)
  {
   for (z = 0; z < 2; z++)
   {
   matriz [i][j][z]=0;
   }
  }
 }
}
//------------------------------------------------------------------------------
int apresentar_inforamcao(int matriz[12][10][2])  
{
  int i,j,z;
  for (i = 0; i < 12; i++)
 {
  for (j = 0; j < 10; j++)   //AQUI O RESULTADO É 010101010101 EM VEZ DE 0000000
  {
   for (z = 0; z < 2; z++)
   {
   printf("%d"),&matriz [i][j][z];
   printf("\n");
   }
  }
 }

 printf("\t#######################################################\n");
 printf("\t\t\tHoras e consumos ano 2007\n");
 printf("\t#######################################################\n");
 printf("\n\t\t  G1\t  G2\t  G3\t  G4\t  G5\n");
 printf("\nJAN");
 printf("\nFEV");
 printf("\nMAR");
 printf("\nABR");
 printf("\nMAI");
 printf("\nJUN");
 printf("\nJUL");
 printf("\nAGO");
 printf("\nSET");
 printf("\nOUT");
 printf("\nNOV");
 printf("\nDEZ");
 printf("\n\nQualquer tecla para voltar ao MENU anterior\n");
 getch();
 system ("cls");
}
 
Última edição pelo moderador:
bem, ja ta resolvido..... isto printf("[%d]"),matriz [j][z]; devia de ser isto printf("[%d]",matriz [j][z]);
 
Última edição pelo moderador:
Na função apresentar_informacao, tens lá um erro:

Código:
printf("%d"),&matriz[i][j][z]

Deves colocar assim:

Código:
printf("%d",matriz[i][j][z]);
 
Back
Topo