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

projecto jogo do bloqueio

Discussão em 'Programação' iniciada por luismsantana, 30 de Agosto de 2012. (Respostas: 5; Visualizações: 589)

  1. boa tarde pessoal,
    vou criar este tópico para ir colocando todas as duvidas que me forem aparecendo durante a resolução deste projecto, só para nao estar sempre a criar novos tópicos ... (se os responsáveis pelo site o permitirem) ...
    eu tenho um vector e quero incrementar em uma unidade a celula escolhida ... mas nao está a dar ...

    o código:
    Código:
    void altera_vector_pedras(Matrix *v)
    {
        int i;
    
        for(i=0;i<n_colunas*v->n_linhas;i++)
        {
            if(v->valores[i]>0)
                v->valores[i]++;
        }
    }
    
     
    o v->valores++ nao deveria fazê-lo?

    ps- o vector ja tem valores inicializados a 0 e a 1 ... se o valor da celula for maior que zero, incrementa uma unidade ...

    abraço
     
    Última edição: 30 de Agosto de 2012
  2. Ryu^

    Ryu^ Power Member

    O problema é que tens um ciclo infinito, não tens condição para sair do for

    A tua condição devolve sempre um número maior que 0 (zero), logo nunca sai do for, mete "i<" antes da condição actual.
     
    Última edição: 30 de Agosto de 2012
  3. o < está la no código, aqui é que devo ter apagado sem querer ou algo assim, obrigado pela resposta :)
     
  4. Cfreitas

    Cfreitas Power Member

    Isto é um wild guess... lembro-me de ter visto isto em algum lado ou estava wasted...
    Experimenta: v->++valores
     
  5. Ryu^

    Ryu^ Power Member

    O que o Cfreitas está a dizer é bem provável ser o problema. Podes estar a incrementar a referência e não o valor.

    Esta alternativa também deve funcionar:
    (v->valores)++;

    Se fizeres passo a passo deve dar de certeza:
    v->valores = v->valores+1;

    Este problema surge por causa da prioridade dos operadores.
     
    Última edição: 30 de Agosto de 2012
  6. obrigado pessoal, mas o problema estava no
    Código:
     for(i=0;i<v->n_colunas*div->n_linhas;i++) 
    eu nao tinha inicializado os campos n_colunas e n_linhas para esse vector, lapso ;)

    thanks ^^

    ja agora
    Código:
    void altera_vector_pedras(Matrix *v, Matrix dim)
    {
        int i;
    
        for(i=0;i<dim.n_colunas*dim.n_linhas;i++)
        {
            if(v->valores[i]>0)
                v->valores[i]++;
        }
    }
    
    :)
     

Partilhar esta Página