projecto jogo do bloqueio

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:
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:
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:
obrigado pessoal, mas o problema estava no
C:
 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]++;
    }
}

:)
 
Back
Topo