Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

alves077

[Resolvido] [Dúvida] inserir em vector

Recommended Posts

alves077

Boa tarde,

Tenho um problema, que pode ter resolução simples, mas assim há primeira vista não estou a ver...

Tenho um array com x posições, tenho que ir inserindo valores nas posições certas, isto é, imaginemos que tenho que inserir o 14 num array cujo o tamanho é igual a 5, inclui o 0...5, na verdade o tamanho e 6. Tenho que inserir o 14 no índice 5, por se contar 0,1,2,3,4,5....14 calha no índice 5. É como tivesse um array circular, e tenho que ir inserindo os valores nos índices correspondentes. Espécie de uma roleta e onde para inseri, contanto sempre com o 0. Pensei implementar num ciclo, mas não queria, penso que matematicamente consigo uma formula que traduza este problema. Alguém têm uma ideia?

Obrigado pela atenção,

alves077

Share this post


Link to post
Share on other sites
HappyHippyHippo

o que escrevestes tem mais voltas e curvas que uma montanha russa ...

queres implementar um buffer circular ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
alves077

Sim pudemos dizer que sim, por exemplo quero inserir o 14, sendo o array com tamanho 6, onde vou inserir? contava de 0...5 varias voltas até chegar ao 14. 0,1,2,3,4...14, onde parar é onde fica guardado.

Obrigado pela atenção,

alves077

Share this post


Link to post
Share on other sites
HappyHippyHippo

queres guardar o numero 14 num buffer circular vazio ou queres guarda X na "posição" 14 ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
alves077

Imaginando que o array ja esta cheio escreve por cima de outro não há problema, quero guardar o número 14 no correspondente índice, o calculo do índice a guardar, é que é o problema, é como anda-se desdo do índice 0 até X(tamanho máximo do array) á roda até encontrar o número 14, e inserir o respectivo número 14 no índice que calculei.

Exemplo tenho um vector com seguintes índices [0,1,2,3,4,5]

tenho o número 8 para inserir 0,1,2,3,4,5,0,1,2 -> insiro no índice 2.

Obrigado pela atenção,

alves077

Share this post


Link to post
Share on other sites
pmg

Podes calcular o resto da divisão (o módulo).


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!

Share this post


Link to post
Share on other sites
HappyHippyHippo

isso é bastante simples:

#define SIZE 5

int main()
{
 int buffer[size];

 int X = 100, pos = 14;

 // inserir valor X na posicao 14
 buffer[pos % SIZE] = X;

 return 0;
}


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Carlos7

Penso que ele não se está a explicar bem.

Se eu entendi o que ele quer é algo do tipo, tem um array de 6 posições (0,1,2,3,4,5).

E imagina que ele quer fazer a inserção do número 14 nesse array através desta regra:

numero 0 - posicao 0

numero 1 - posicao 1

numero 2 - posicao 2

numero 3 - posicao 3

numero 4 - posicao 4

numero 5 - posicao 5

numero 6 - posicao 0

numero 7 - posicao 1

numero 8 - posicao 2

numero 9 - posicao 3

numero 10 - posicao 4

numero 11 - posicao 5

numero 12 - posicao 0

numero 13 - posicao 1

numero 14 - posicao 2

Ou seja o numero 14 acabaria por ficar na posição 2 porque quando chegamos ao fim do array, voltamos inserir o numero na posicao inicial do array e voltamos a percorrê-lo. Certo?

Edited by Carlos7

Share this post


Link to post
Share on other sites
pmg

Qual é o resto da divisão de 14 por 6?


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!

Share this post


Link to post
Share on other sites
Carlos7

2 :)

Ah já percebi, basta dividir a "posição" pelo total pelo menos para este caso em que os números começam também em 0, porque imagina que ele começava em 3.

3 ficava na posição 0

4 ficava na posição 1

Essa forma já não funcionaria ou funcionaria?

Share this post


Link to post
Share on other sites
pmg

Subtrai-lhe o comeco antes de calcular o resto da divisao

Para meter valores entre 3 e 14 num espaco de 5 elementos calcula o resto da divisao do teu valor - 3 por 5.

Por exemplo, para o valor 3 calcula o resto da divisao de 0 (3 - 3) por 5 (dá 0);

para o valor 14 calcula o resto da divisao de 11 por 5 (dá 1)


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!

Share this post


Link to post
Share on other sites
alves077

Pois, esqueci me de dizer que não começa obrigatoriamente por 0, se começa-se sempre sabia que era o resto, mas não começando por 0, como fiz não batia muito certo, mas realmente assim bate certo.

Obrigado pela ajuda,

alves077

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.