Jump to content

Recommended Posts

Posted

Boas,

Tenho aqui uma dúvida se puderem ajudar agradecia.

Tenho um array em c, quero dividir ele em vários sub-arrays, quando for par tudo bem, mas quando for impar queria que o ultimo array fica-se sempre com mais um elemento, Só que não sei bem como fazer, alguma ideia?

Obrigado pela atenção,

koyote

Posted

podes criar um array de arrays ou um apontador de arrays, depois percorres o array principal e inseres nos sub-arrays.

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Posted

Tenho um array em c, quero dividir ele em vários sub-arrays

OK sem problema.

quando for par tudo bem

o que é um array par ???

mas quando for impar

o que é um array impar ??

queria que o ultimo array fica-se sempre com mais um elemento

último array ?? não dizes qual a condição de separação do array, qual o valor a dar ao elemento extra e que tipo de elementos tem o array

Só que não sei bem como fazer, alguma ideia?

sem responder às questões anteriores (principalmente à última) nem eu !!

PS : tenho uma ideia do problema mas não vou responder sem saber que é a resposta certa

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

OK sem problema.

o que é um array par ???

o que é um array impar ??

último array ?? não dizes qual a condição de separação do array, qual o valor a dar ao elemento extra e que tipo de elementos tem o array

sem responder às questões anteriores (principalmente à última) nem eu !!

PS : tenho uma ideia do problema mas não vou responder sem saber que é a resposta certa

Ok, explicado um bocado a correr, vou explicar-me melhor:

Um array com número de elementos par consigo porque faço:


for(k=i*ntotal/dividendo; k<ntotal/dividendo;k++)
{
...
}
i++;

Sendo o ntotal, o número total de elemento do array original, o dividendo o número que quero dividir, isto é, por quantos array quero dividir.

Só que se for ímpar isto não funciona, queria que na ultima separação. Acho que a ideia para par está +/- certa, para ímpar é que não bate certo. Queria que o elemento que sobrasse ficasse no ultimo array criado.

Obrigado pela atenção,

koyote

Posted

Mas so queres dividir em dois sub-arrays, ou podes querer dividir em tres ou quatro ou mais?

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!

Posted

Mas so queres dividir em dois sub-arrays, ou podes querer dividir em tres ou quatro ou mais?

Pode se dividir em mais, o numero não é fixo, isto é o dividendo pode ser 2 ou 4 ou 8, etc..

Posted

Pode se dividir em mais, o numero não é fixo, isto é o dividendo pode ser 2 ou 4 ou 8, etc..

Entao supoe que o array inicial tem 10 elementos (1 a 10) e queres dividir por 4 arrays.

O resultado que pretendes é

subarray1 com 2 elementos: 1, e 2

subarray2 com 2 elementos: 3, e 4

subarray3 com 3 elementos: 5, 6, e, 7

subarray4 com 3 elementos: 8, 9, e 10

Hint: olha para o resto da divisao e ve se consegues extrair uma formula para o numero de elementos com base nesse resto.

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!

Posted

Entao supoe que o array inicial tem 10 elementos (1 a 10) e queres dividir por 4 arrays.

O resultado que pretendes é

subarray1 com 2 elementos: 1, e 2

subarray2 com 2 elementos: 3, e 4

subarray3 com 3 elementos: 5, 6, e, 7

subarray4 com 3 elementos: 8, 9, e 10

Hint: olha para o resto da divisao e ve se consegues extrair uma formula para o numero de elementos com base nesse resto.

Sim podia ser algo assim a solução, com o resto consigo perceber se é par ou impar, mas agora como usar isso é que ainda não cheguei la...

Posted

... com o resto consigo perceber se é par ou impar ...

La estas tu com o par ou impar ... isso so interessa quando queres dividir em dois arrays; quando queres dividir em n arrays o que interessa é o resto da divisao por n (o resto da divisao por 2 indica se é par ou impar)

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!

Posted

nada indica na tua especificação como fazer-lo, logo só se pode responder de uma forma : ao calhas desde que não seja mais do que 1 em cada

Queria que fosse dividido pelos últimos array, se não mencionei erro meu, peço desculpa.

Posted

faz fora

Um dos problemas que isso têm, é que quando eu tenho um ciclo while que percorro os dividendos, isto é, quantos array vou ter, depois dentro do while depois de criar o array propriamente dito, num ciclo for, mando logo para outra função para trabalho com esse array, e ainda não sai do while se é que me entendes, mal faço o array mando para outra função para ele ser trabalhado. O meu problema e como sei que estou nos últimos e começo a por mais um elemento.

Posted

se o caso é esse o resultado é pura matemática

int array_length;
int subarray_count;
int subarray_length = array_length / subarray_count;
int leftovers = array_length % subarray_count;

logo somente os subarrays com índice superior ou igual a array_length - leftovers - 1 é que receberão um elemento extra

como vê, matemática ...

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

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
×
×
  • Create New...

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.