1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Envio de matriz para uma função em C

Discussão em 'Programação' iniciada por AmigoDaSorna, 24 de Novembro de 2007. (Respostas: 3; Visualizações: 4020)

  1. AmigoDaSorna

    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: 24 de Novembro de 2007
  2. AmigoDaSorna

    AmigoDaSorna Power Member

    bem, ja ta resolvido..... isto printf("[%d]"),matriz [j][z]; devia de ser isto printf("[%d]",matriz [j][z]);
     
    Última edição pelo moderador: 24 de Novembro de 2007
  3. Baderous

    Baderous Banido

    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]);
     
  4. AmigoDaSorna

    AmigoDaSorna Power Member

    Obrigado. dei por ele agora mm
     

Partilhar esta Página