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

Programa em C - Urgente

Discussão em 'Programação' iniciada por danielamaia, 15 de Abril de 2004. (Respostas: 1; Visualizações: 1291)

  1. danielamaia

    danielamaia Power Member

    Olá a todos! Tou a tentar fazer um programa em C que me leia de um ficheiro de texto um "labirinto", onde 1 significa caminho livre , * uma parede e s a saida.No programa terei de usar recursividade, com backtracking la para o meio. Isto é o que tenho no meu ficheiro de texto:

    1111****
    ****111s

    O programa esta assim:

    #include <string.h>
    #include <stdio.h>
    #include <stdlib.h>
    #define LIN 2
    #define COL 8

    char lab[LIN][COL];
    void labirinto(FILE *ft,int lin,int col,int contl,int contc);


    int solin[8]={-1,-1,-1,-1,-1,-1,-1,-1};
    int solcol[8]={-1,-1,-1,-1,-1,-1,-1,-1};



    main()
    {

    FILE *ft;
    int lin=0,col=0,contl=0,contc=0;

    if((ft= fopen("lab.txt","r"))==NULL)
    {
    printf("\n Ocorreu um erro ao abrir o ficheiro\n");
    exit(1);
    }



    //labirinto(ft,lin,col,contl,contc);

    while(!feof(ft)){

    labirinto(ft,lin,col,contl,contc);

    }

    }



    void labirinto(FILE *ft,int lin,int col,int contl,int contc)
    {

    int i,j;

    lab[lin][col]=fgetc(ft);

    if(lab[lin][col]=='s')
    {
    printf("\n E s");
    solin[contl]=lin;
    solcol[contc]=col;

    for(i=0;i<8;i++)
    for(j=0;j<8;j++)
    printf("[%d,%d]",solin,solcol[j]);

    }

    if(lab[lin][col]=='1')
    {
    printf("\n E 1");

    solin[contl]=lin;

    printf("%d",lin);
    printf("\t%d",solin[contl]);
    printf("\t%d",contl);
    contl++;
    solcol[contc]=col;
    printf("\t%d",col);
    printf("\t%d",solcol[contc]);
    printf("\t%d",contc);
    contc++;

    labirinto(ft,lin,col+1,contl,contc);
    }

    if(lab[lin][col]=='*')
    {

    printf("\n E *");
    solin[contl]=-1;
    contl++;
    printf("\t%d",lin);
    solcol[contc]=-1;
    contc++;
    printf("\t%d",col);

    labirinto(ft,lin+1,col,contl,contc);

    }



    }



    O objectivo é guardar na solin o nº das linhas de 1 e em solcol o nº das colunas de 1.E qdo chegar ao s, guardar a posição dele também e imprimir as soluções. Na realidade ele não dá bem o que eu quero! Podem-me ajudar?Muito Obrigada!
     
  2. ctr

    ctr Power Member

    Sei que era urgente mas se ainda precisares de ajuda ...

    Segundo o que percebi queres que em solin fique 1 1 1 1 2 2 2 -1
    em em solcol fique 1 2 3 4 5 6 7 -1 como resultados finais

    É isso ?

    Cmps.
     

Partilhar esta Página