HRMT Posted June 3, 2012 at 12:10 AM Report #459941 Posted June 3, 2012 at 12:10 AM Mais uma vez venho pedir a vossa ajuda. O carro já anda pelo tabuleiro. Agora estou com dúvidas é numa pergunta em que tenho de dar a posição inicial do carro e uma lista de comandos e ele determinar a posição final. Vou buscar a posicao inicial na boas pois está guardada numa estrutura. Agora para o resto estou a bater mal. Criei uma estrutura para os comandos e depois uma função que insere os comandos na cauda e os vai lendo. Mas depois daqui empaanquei. typedef struct sComando { char *cmd; struct sComando *next; }Comando; Comando* inserir_cmd_cauda (Comando *list, char *cmd) { Comando *list_aux = list; Comando *new = (Comando*)malloc(sizeof(Comando)); strncpy(new->cmd, cmd, 4); new->next=NULL; if(list_aux == NULL) { /*Caso a lista seja vazia introduz logo na primeira posição*/ list_aux = new; } else { /*Caso n seja vazia faz o while para percorrer a lista até ao ultimo elemento*/ while (list_aux->next) { list_aux = list_aux->next; } /*Agora já está no ultimo elemento da lista e então introduz o novo elemento no next do ultimo elemento da lista*/ list_aux->next=new; } return list; }
pmg Posted June 3, 2012 at 11:02 AM Report #459966 Posted June 3, 2012 at 11:02 AM Se em vez de construir a lista de comandos fores calculando a posição depois de cada comando, não torna o teu programa mais fácil? De qualquer maneira, tens de calcular a posição resultante de cada comando. Eu sugiro uma função que receba a posição actual e o comando mais recente e devolva a posição resultante. Dependendo das estruturas de dados, qualquer coisa assim struct posicao executacomando(struct comando comando, struct posicao posicaoinicial); What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
HRMT Posted June 3, 2012 at 02:59 PM Author Report #460003 Posted June 3, 2012 at 02:59 PM Eu também pensei fazer assim que era mais facil mas o prof pede que seja a lista de comandos. Vou tentar fazer então. Obrigado
HRMT Posted June 3, 2012 at 03:56 PM Author Report #460021 Posted June 3, 2012 at 03:56 PM (edited) É algo assim deste genero? Ou como eu acho estou a fazer asneiras? Tabuleiro *executa_comando(Comando *sComando, POS *inic, Carro *c) { int i,x,y; char *list_cmd; char *ptr = list_cmd; inic -> xli = (*c) -> x; inic -> ycol = (*c) -> y; printf("Introduza a lista de comandos: \n"); scanf("%s", list_cmd); inserir_cmd_cauda (*list_cmd, char *cmd); for(i = 0; ptr[i] != '\0'; i++) { if ((strcmp(ptr[i], VD)==0)) sTabuleiro = rodar_direita (sComando, inic, &(*c)); stabuleiro = grava_pos_tabuleiro(stabuleiro,xli,ycol,'c') //Agora a mesma coisa pra os outros comandos VE e AV } return sTabuleiro; } Edited June 3, 2012 at 03:56 PM by HRMT
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now