koyote Posted October 10, 2012 at 04:26 PM Report #478610 Posted October 10, 2012 at 04:26 PM 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
pikax Posted October 10, 2012 at 04:28 PM Report #478612 Posted October 10, 2012 at 04:28 PM 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."
HappyHippyHippo Posted October 10, 2012 at 04:36 PM Report #478614 Posted October 10, 2012 at 04:36 PM 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 Portugol Plus
koyote Posted October 10, 2012 at 04:56 PM Author Report #478615 Posted October 10, 2012 at 04:56 PM 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
pmg Posted October 10, 2012 at 05:11 PM Report #478617 Posted October 10, 2012 at 05:11 PM 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!
koyote Posted October 10, 2012 at 05:29 PM Author Report #478618 Posted October 10, 2012 at 05:29 PM 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..
pmg Posted October 10, 2012 at 05:37 PM Report #478620 Posted October 10, 2012 at 05:37 PM 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!
koyote Posted October 10, 2012 at 05:51 PM Author Report #478622 Posted October 10, 2012 at 05:51 PM 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...
pmg Posted October 10, 2012 at 05:56 PM Report #478624 Posted October 10, 2012 at 05:56 PM ... 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!
koyote Posted October 10, 2012 at 06:55 PM Author Report #478627 Posted October 10, 2012 at 06:55 PM hm ok, o n é os elementos que sobram como dividir esses elementos pelo array?
HappyHippyHippo Posted October 10, 2012 at 07:14 PM Report #478630 Posted October 10, 2012 at 07:14 PM 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 IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
koyote Posted October 10, 2012 at 07:56 PM Author Report #478645 Posted October 10, 2012 at 07:56 PM 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.
HappyHippyHippo Posted October 10, 2012 at 07:57 PM Report #478646 Posted October 10, 2012 at 07:57 PM então destribuies pelos últimos arrays !! acabaste de o dizer !! onde está o problema ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
koyote Posted October 10, 2012 at 08:01 PM Author Report #478647 Posted October 10, 2012 at 08:01 PM então destribuies pelos últimos arrays !! acabaste de o dizer !! onde está o problema ? Sim, só não estou a ver como fazer isso dentro do ciclo
HappyHippyHippo Posted October 10, 2012 at 08:13 PM Report #478649 Posted October 10, 2012 at 08:13 PM faz fora IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
koyote Posted October 10, 2012 at 08:33 PM Author Report #478653 Posted October 10, 2012 at 08:33 PM 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.
HappyHippyHippo Posted October 10, 2012 at 09:02 PM Report #478666 Posted October 10, 2012 at 09:02 PM 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 Portugol Plus
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now