Ir ao conteúdo
  • Cadastre-se

Matriz de caracteres


davidecom

Posts recomendados

Olá estou aprendendo sobre linguagem C e gostaria de saber como proceder para ler uma matriz de caracteres, uma matriz de inteiros (0 ou 1) mas que tem duas letras no meio dela(E e S)

 

Exemplo da matriz:

8

1 1 1 1 1 0 0 0
1 0 0 0 1 0 0 0
1 E 1 1 1 0 0 0
1 0 0 0 1 1 1 1
1 0 1 0 0 0 0 1
1 0 0 0 1 0 0 1
1 1 1 1 1 0 S 1
0 0 0 0 1 1 1 1
Esse é um exemplo de entrada, o 8 na primeira linha significa que tenho que alocar memória pra uma matriz 8x8, as próximas linhas representam a a matriz. Sei que seria mais fácil fazer a matriz só de inteiros, mas meu professor passou a entrada assim e não poderei alterá-la porque ele utilizará arquivos txt com matrizes nesse padrão (Com as letras E e S) pra corrigir os trabalhos.
 
Essa é apenas uma parte do trabalho. Fiz um código para testar essa parte, usando uma matriz do tipo int, Dessa maneira da certo, eu apenas troco o "E" por um "3" e o "S" por um "5". e consigo ler a matriz elemento por elemento. Só que não é isso que preciso, preciso que a matriz leia os elementos e forma de caracteres(char), o problema é que nas strings o scanf também pega os espaços e exista o \0 que finaliza cada string.
 
A ideia é a matriz representar um labirinto onde "0" significa transito livre, "1" significa parede, "E" significa entrada e "S" significa saída. Terei que fazer uma função recursiva que retorne "sim" ou "nao" se existir ou não pelo menos um caminho da entrada para a saída, sendo que não pode ter movimentos na diagonal e o mapa não é circular(tipo o mapa do jogo da cobrinha onde ela atravessa as arestas). Inclusive, não faço ideia de como implementar essa função recursiva, se puderem me orientar será bom também.

 

Código:

 


#include <stdio.h>#include <stdlib.h>int main(){    int nxn, a, i, j;    int **matriz;    scanf("%d", &nxn);    matriz = (int**) malloc (nxn * sizeof(int*));    for(a = 0; a < nxn; a++)        matriz[a] = (int*) malloc (nxn * sizeof(int));    for(i = 0; i < nxn; i++)    {        printf("\n\n");        for(j = 0; j < nxn; j++)        {            scanf("%d", &matriz[i][j]);            printf(" %d", matriz[i][j]);        }    }    printf("%d", nxn);    free(matriz);    return 0;}
Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...