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?
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: