Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Linguagem c -função

Estou criando um algoritmo e puxa um arquivo txt cujao tem o tamnho da matriz e caracteres q juntos representam um labirinto. Ao programar em c como divido minhas funções ? Queria uma para ler a matriz uma para pegar o arquivo uma para organizar matriz e outra para reconhecer o r e o p ?

segue o código:

#include <iostream>
#include <iomanip>
#include  <fstream>
#include <stdlib.h>
#include <string>

using namespace std;

int main(void)
{



char **m_ini; 
int l,c;



 // declaro variavel file hadle para um txt
 ifstream txtFile;

 // abrindo o arquivo txt
 txtFile.open ("maze20x20.txt");


 // le o tamonho da matriz

 txtFile >> l >> c ;


 // aloco memoria 

m_ini = (char **) malloc(l * sizeof(int*));//char


 for ( int nl = 0 ; nl<l; nl ++)
 {
m_ini[nl] = (char *) malloc(c * sizeof(int));
 }


// le os valores do arquivo e preenche


 for (int i=0;i<l;i++)
         {
            for(int j=0;j<c;j++)
            {
            txtFile >> m_ini[i][j];
            }
 }



//   imprime o valor da matriz na tela 

cout << " A matriz lida do arquivo tem tamanho: " << l << " x " << c;
cout << " Conteudo da matriz inicial no arquivo: " << endl;

for(int i=0;i<l;i++)
         {
            for (int j=0;j<c;j++)
            {
            cout << m_ini[i][j] << "";
            }

            cout  << endl;
         }

cout << endl <<endl;

printf("\n\n******************* Saida ********************* \n\n");

 for(int i=0;i<l;i++)
         {
            for (int j=0;j<c;j++){

                if (m_ini[i][j] == 'r')
                {

                       printf ("\n Elemento R  [%i][%i] ", i, j);
                }
            }
        }

// fazer do p tbm 

 for(int i=0;i<l;i++)
         {
            for (int j=0;j<c;j++){

                if (m_ini[i][j] == 'p')
                {

                       printf ("\n Elemento p [%i][%i] ", i, j);
                }
            }
        }





 for(int i=0;i<l;i++)
         {
            for (int j=0;j<c;j++){

                if (m_ini[i][j] == '#')
                {

                       printf ("\n Elemento # [%i][%i] ", i, j);
                }
            }
        }
}
1 resposta
solução!

Meus conhecimentos de C++ são nulos, mas você pode aplicar o mesmo princípio que dos outros cursos de introdução a programação (como a do javascript)

Um exemplo seria criar uma funcao carrega_mapa que recebe como argumento um file descriptor ou nome de arquivo e devolve a char **m_ini; que você usa. exemplo seria

char **m_ini = carrega_mapa("mapa.txt");

Para isso precisa declarar uma função:

char ** carrega_mapa(char* nome_arquivo) {
 ifstream txtFile;
 txtFile.open (nome_arquivo);
  ///... restante do código
}

claro, é só um esboço