1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Desafio de sala - Não entra em todas as condições

Pessoal bom dia. Ontem na faculdade apareceu um desafio, um exercício sobre cubo mágico, em que devo contar quantos passos serão necessários para voltar o cubo para seu estado original. Criei matrizes para cada face, onde eu trabalho com a alteração dos valores dos "extremos" para que depois eu consiga detectar as mudanças. Cada Letra inserida de uma string que eu entro no início, é um giro (sentido horário ou antihorário) no cubo em uma das faces. Cada letra é uma face. Porém o que acontece é que, quando eu vou detectar cada letra e chamar o método de mudar a face, ele para ali naquele if e não verifica os outros, mesmo estando dentro do for. Se eu entro por exemplo com: U (muda apenas 1 face) ocorre td normal. Mas quando eu entro com 2 letras: UR por exemplo, ele só mexe em uma face (da letra U). Ou seja, ele entra em uma condição, mas não entra nas outras que ocorrem. Já tentei com outras sequencias e depois no final exibindo o resultado. Código:

int main(int argc, char *argv[]) {

    // inicializa c/ valores padrão
    inicializaMatrizes();

    int i; 
    char sequencia[] ="";
    char *partes;

    // Letras válidas: U F D R L B 
    scanf("%s", &sequencia);

    for(i=0;i<sizeof(sequencia);i++)
    {
        //printf("%c\n", sequencia[i]);

        if(sequencia[i] == 'U') // sentido horario
        {
            mudaFace(sequencia[i]);
            printf("Entrou U\n");
        }
        if(sequencia[i] == 'F')
        {
            mudaFace(sequencia[i]);
            printf("Entrou F\n");
        }
        if(sequencia[i] == 'D')
        {
            mudaFace(sequencia[i]);
            printf("Entrou D\n");
        }
        if(sequencia[i] == 'R')
        {
            mudaFace(sequencia[i]);
            printf("Entrou R\n");
        }
        if(sequencia[i] == 'L')
        {
            mudaFace(sequencia[i]);
            printf("Entrou L\n");
        }
        if(sequencia[i] == 'u')
        {
            mudaFace(sequencia[i]);
            printf("Entrou u\n");
        }
        if(sequencia[i] == 'f')
        {
            mudaFace(sequencia[i]);
            printf("Entrou f\n");
        }
        if(sequencia[i] == 'd')
        {
            mudaFace(sequencia[i]);
            printf("Entrou d\n");
        }
        if(sequencia[i] == 'r')
        {
            mudaFace(sequencia[i]);
            printf("Entrou r\n");
        }
        if(sequencia[i] == 'l')
        {
            mudaFace(sequencia[i]);
            printf("Entrou l\n");
        }


    }    

    mostraValores();
    //checaMudancas(); // mostra faces modificadas


    return 0;
}
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags estrutura-de-dados algoritmos c ou faça a sua própria pergunta.