Página 1 de 1

Percorrer tabela de valores

MensagemEnviado: 28 Nov 2008 04:07
por geraldomelo
Ola Pessoas .. vamos a essa seqüencia :
int const tabela[40] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40};

se eu fizer :


a=tabela[x]; e ir incrementando o x até 40 , ate aqui tudo ok , mas ai eu preciso de mais duas variaveis tipo a1=tabela[x+14] e a2=tabela[x+27] , ou seja , preciso percorrer ela , com tres variaveis distintas e defasadas cada uma em 1/3 ... ai eh que tá , como fazer isso ?? do jeito que está ai acima , eles sempre vão começar do mesmo ponto , quando o x zerar , e eu queria que as 3 variaveis "corressem" a tabela inteira , tipo ficasse dando volta , se eh que vcs me entenderam .. tipo , o a1 sempre vai começar da posição 14 do jeito que está ai . mas oque eu quero eh que quando ele chegasse na posição 40 , ele começasse na posição 0 e consequentemente o a2 estaria na posição 14 e o a , estaria na posição 27 , ou seja estaria uma "volta " atrás de a1 e a2

abs

Geraldo

Re: Percorrer tabela de valores

MensagemEnviado: 28 Nov 2008 08:04
por andre_luis
Geraldo,


Porque não implementa isso via função ?
A variável de saída pode ser carregado num array :
Código: Selecionar todos
TYPE_ESTRUTURA int [3]  ;
valor TYPE_ESTRUTURA ;
valor = f ( tabela[0] , offset ) ;

Sendo algo tipo :

TYPE_ESTRUTURA f ( *int Table , char posicao )
{
char v1, v2 , v3 ;
resultado TYPE_ESTRUTURA ;

v1 = valor [ posicao ] ;
v2 = valor [ posicao + 14 ] ;
v3 = valor [ posicao + 27 ] ;

resultado = [ v1 , v2 , v3 ]
return (  resultado )
}



+++

MensagemEnviado: 28 Nov 2008 08:15
por Jorge_Francisco
Geraldo,

É o que o andre_teprom disse, faz uma função, a não ser que só tenha colocado aquele array somente para exemplificar e o conteudo não seja aquele.

Explique melhor, a vai de 0 a 40?a1 vai de 14 a 40 ou de 14 a 27?e a2? Depois que chegar ao 40, volta ao 0?

Abraço

MensagemEnviado: 28 Nov 2008 10:30
por Djalma Toledo Rodrigues
Parece que ele quer contadores em anel

1 a 40 14 a 13 (passando por 40) e 27 a 26 (idem)
´.

Re: Percorrer tabela de valores

MensagemEnviado: 29 Nov 2008 19:07
por Renie
Oi G!

a resposta é bem simples!

Use 3 indexadores!

Não uso C, tente entender!

posicao, posicao1 e posicao2

posicao é seu index primário, você já deve ter um tratamento para o mesmo!

posicao1 = posicao + 14
if (posicao1 > 40) { posicao1 = posicao1 -40) // acho que é assim em C

posicao2 = posicao + 27
if (posicao2 > 40) { posicao2 = posicao2 - 40}

e use eles como indexadores da sua tabela circular!

MensagemEnviado: 29 Nov 2008 21:47
por barboza
Código: Selecionar todos
idx1++;
idx1 %= sizeof(tabela);

idx2 = idx1 + 14;
idx2 %= sizeof(tabela);

idx3 = idx1 + 27;
idx3 %= sizeof(tabela);


dado1 = tabela[idx1];
dado2 = tabela[idx2];
dado3 = tabela[idx3];




Se sua tabela realmente tem os valores que colocou, você não precisa dela, pois o dado será o idx + 1.

MensagemEnviado: 30 Nov 2008 20:27
por ivan
Uma lista encadeada com 3 indices. Acessou, idx aponta para o prox.

MensagemEnviado: 30 Nov 2008 20:53
por geraldomelo
pessoal , obrigado a todos ... esta resolvido .. a solução do Renie satisfez oque precisava ... ah sim , os valores contidos na tabela são só ilustrativos

abraço a todos .. Valew Renie

Geraldo