Ir para o conteúdo
  • 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

Mensagens Recomendadas

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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?

Editado por Carlos7

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.