Estou tentando programar uma batalha naval e não consigo entender porque ao executar o programa com esse código anexado, as vezes as Fragatas "FFF" e os Submarinos "SSSSS" não estão sendo inseridos na matriz, eu n consigo achar o erro do código. E também n entendo porque quando acerto uma mina o jogo não esta parando, sendo q coloquei um Contador como argumento nas funções de jogo do Jogador e do Computador para receber -50 no contador quando uma bomba fosse atingida e o while no main não está parando quando isso acontece, e tambem n entendo porque mesmo colocando uma função pro sorteio do Computador, e outra função para Jogador as matrizes estão iguais, mesmas posições de Minas e Embarcações.Gostaria que alguém me ajudasse com esses erros, ow pelo menos algum deles.    #include <stdio.h> #include <conio.h> #include <ctime> #include <stdlib.h> #include <time.h>  int O;  void Zerar_Matriz(char Matriz[][10]) {   int z,y;      for (y=0 ; y < 10; y++)      {          for (z=0 ; z < 10; z++)          {             Matriz[z][y] = 0;          }      } }  void Zerar_Matriz_Camuflada(char Matriz[][10]) {   int z,y;      for (y=0 ; y < 10; y++)      {          for (z=0 ; z < 10; z++)          {             Matriz[z][y] = 'V';          }      } }   void Insere_PortaAviao(char Matriz[][10]) {    int i,y,z,aux;    bool Verificador;      i = rand()%4;      y = rand()%10;                 aux = i + 6;                 for (z= i ; z <= aux; z++)                 {                 Matriz[z][y] = 'P';                 } }    void Insere_Submarino(char Matriz[][10]) {      int z,y,i,aux;      bool Verificador = true;      while (Verificador)      {            z = rand()%6;      y = rand()%10;      if (Matriz[z][y] == 0)        {        Verificador = false;        aux = z + 4;        i = z;          for (z ; z < aux ; z++)          {            if (Matriz[z][y] != 0)            {            Verificador = true;            break;            }          }        }      }            for (;i <= aux ; i++)            {                Matriz[i][y] = 'S';            } }         void Insere_Fragata(char Matriz[][10]) {      int z,y,i,aux;      bool Verificador = true;      while (Verificador)      {      z = rand()%8;      y = rand()%10;        if (Matriz[z][y] == 0)        {        Verificador = false;        aux = z + 2;        i = z;          for (z ; z < aux ; z++)          {            if (Matriz[z][y] != 0)            {            Verificador = true;            break;            }          }        }      }            for (i ;i <= aux ;i++)            {                Matriz[i][y] = 'F';            } }           void Insere_Mina(char Matriz[][10]) {    int z,y,i,aux;      bool Verificador = true;      while (Verificador)      {           z = rand()%10;      y = rand()%10;        if (Matriz[z][y] == 0)        {                Matriz[z][y] = 'M';                Verificador = false;        }            } }           void Preencher_Matriz_Barco(char Matriz[][10]) {     Insere_PortaAviao(Matriz);     Insere_Submarino(Matriz);     Insere_Submarino(Matriz);     Insere_Fragata(Matriz);     Insere_Fragata(Matriz);     Insere_Mina(Matriz);     Insere_Mina(Matriz);     Insere_Mina(Matriz); }  void Exibir_Matriz(char Matriz[][10]) {      int y,z;          printf ("               Tabuleiro : Jogador \n\n");          printf ("    1    2    3    4    5    6    7    8    9    10\n");           for (y=0 ; y <= 9; y++)           {               if (y < 9) {printf ("%i ",y+1);}               if (y==9){printf ("%i",y+1);}               for (z=0 ; z <= 9; z++)               {               printf ("|_%c_|",Matriz[z][y]);               }               printf ("\n");           }     printf ("\n");       }  void Exibir_Matriz_Camuflada(char Matriz[][10]) {      int y,z;          printf ("               Tabuleiro : Computador \n\n");          printf ("    1    2    3    4    5    6    7    8    9    10\n");           for (y=0 ; y <= 9; y++)           {               if (y < 9) {printf ("%i ",y+1);}               if (y==9)  {printf ("%i",y+1);}               for (z=0 ; z <= 9; z++)               {                   if (Matriz[z][y] != 'V')                   {                                     if (Matriz[z][y] == 0)                                    {                                    printf ("|_ _|");                                    }                                    else                                     {                                    printf ("|_%c_|",Matriz[z][y]);                                    }                   }                   else                   {                    printf ("|_?_|");                   }               }               printf ("\n");           }    printf ("\n"); }  void Computador_Joga(char Matriz[][10],char MatrizX[][10], int) {          int z,y;      O = 0;      bool Verificador = true;      while (Verificador)      {      z = rand()%10;      y = rand()%10;            if ( MatrizX[z][y] == 'V')            {               if ( Matriz[z][y] != 0 )               {                      if ( Matriz[z][y] == 'P' )                   {                   O++;                   Matriz[z][y] = 'X';                   printf ("O computador acertou parte de um Porta Aviao\n");                   }                   if ( Matriz[z][y] == 'S' )                   {                   Matriz[z][y] = 'X';                   O++;                        printf ("O computador acertou parte de um Submarino\n");                      }                    if ( Matriz[z][y] == 'F' )                   {                   Matriz[z][y] = 'X';                   O++;                        printf ("O computador acertou parte de uma Fragata\n");                    }                     if ( Matriz[z][y] == 'M' )                   {                   Matriz[z][y] = 'X';                   O = -50;                   printf ("O computador acertou uma Mina\n : Game Over, voce ganhou.\n");                   }               }               else                {               Matriz[z][y] = 'A';               printf("O computador jogou : Agua\n");               }            MatrizX[z][y] = Matriz[z][y];            Verificador = false;            }                                            } }   void Inicio(char Matriz[][10]) {     Zerar_Matriz(Matriz);     Preencher_Matriz_Barco(Matriz);    }   void Apostar(char Matriz[][10],char Matriz_Camuflada[][10], int) {          int z,y;      O = 0;      srand (time(NULL));      bool Verificador = true;      while (Verificador)      {      printf ("Digite a coluna que voce deseja atacar (1-10) : ");      scanf ("%i", &z);      printf ("Digite a linha que voce deseja atacar (1-10) : ");      scanf ("%i", &y);      printf ("\n");      z = z - 1;      y = y - 1;        if (Matriz_Camuflada[z][y] == 'V')        {          if ( Matriz[z][y] != 0 )          {                 if ( Matriz[z][y] == 'P' )              {              O++;              printf ("Voce acertou parte de um Porta Aviao\n");              }              if ( Matriz[z][y] == 'S' )              {              O++;              printf ("Voce acertou parte de um Submarino\n");                 }               if ( Matriz[z][y] == 'F' )              {              O++;              printf ("Voce acertou parte de um Fragata\n");               }                if ( Matriz[z][y] == 'M' )              {              O = -50;              printf ("Voce acertou uma Mina\n Game Over, voce perdeu.\n");              }                                                }          else          {               printf("Agua\n");          }          Matriz_Camuflada[z][y] = Matriz[z][y];          Verificador = false;        }        else         {         printf ("Jogada invalida.\n\n");        } } }   main() {     int Contador = 0;     int ContadorJogador = 0;     int ContadorComputador = 0;     char Computadorcm[10][10];     char Jogador[10][10];     char Computador[10][10];     char Jogadorcm[10][10];      Inicio(Jogador);     Inicio(Computador);     Exibir_Matriz(Jogador);      Zerar_Matriz_Camuflada(Computadorcm);     Zerar_Matriz_Camuflada(Jogadorcm);     Exibir_Matriz_Camuflada(Computadorcm);     while (Contador >= 0)     {           Contador = 0;           Apostar(Computador,Computadorcm,Contador);           _sleep(1500);           ContadorJogador += O;           if (ContadorJogador < 0) {exit(0); }            else if (ContadorJogador == 23) { printf ("Voce ganhou.\n Parabens."); getch(); exit(0); }           Contador = 0;           Computador_Joga(Jogador,Jogadorcm,Contador);           Exibir_Matriz(Jogador);           Exibir_Matriz_Camuflada(Computadorcm);           _sleep(1500);           ContadorComputador += O;           if (ContadorComputador < 0) {exit(0); }           else if (ContadorJogador == 23) { printf ("Voce perdeu.\n Mais sorte da proxima vez."); getch(); exit(0); }      } getch(); } [/codebox]