como aumentar o tamanho de um array durante um processo?

1. como aumentar o tamanho de um array durante um processo?

hitler
hitler

(usa openSUSE)

Enviado em 10/06/2017 - 11:48h

tipo, o usuario vai digitar um numero grande e vai ser armazenado em um LONG, mas não sei quantos digitos este numero tem mas cada digito tem de ser armazenado em uma posição em um array, como fazer o array aumentar a medida que os numeros serão colocados???


  


2. Re: como aumentar o tamanho de um array durante um processo?

Paulo
paulo1205

(usa Ubuntu)

Enviado em 10/06/2017 - 18:10h

Você não disse se está usando C ou C++. Seria legal saber isso para poder dar a resposta mais adequada para a linguagem que você for usar.


Você mencionou que vai usar long, sendo assim, o maior valor válido é finito e conhecido, de modo que não vai ser possível representar (de modo válido) um valor com mais dígitos do que um determinado limite calculável. Sabendo esse limite superior de antemão, você não precisaria ter de redimensionar nenhum array.

Você pode saber quantos bits há num long (ou outro tipo qualquer), fazendo o seguinte.

size_t n_bits_long=sizeof(long)*CHAR_BIT;  // CHAR_BIT (quantos bits num char) é definido em <limits.h>. 


Por exemplo, com um long de 64 bits, uma representação em string com base binária (apenas algarismos 0 e 1) caberia em 65 bytes (64 para os algarismos binários e mais um para o byte nulo que termina a string).

Se em vez de representação binária você quisesse usar representação decimal (algarismos de 0 a 9), você poderia calcular a quantidade máxima de bits do seguinte modo.

// Parcela “1” porque mesmo o valor zero precisa de pelo menos um algarismo.
size_t n_digitos_long=1+n_bits_long*log10(2);


A essa quantidade de dígitos, você acrescentaria mais um byte para pode acomodar o byte nulo terminador da string, e esse seria o tamanho máximo necessário para conseguir escrever um valor válido contido num long.


De todo modo, que você quiser realocar um array que tenha sido alocado dinamicamente com alguma função da família de malloc(), você pode usar a função realloc().


3. Re: como aumentar o tamanho de um array durante um processo?

Perfil removido
removido

(usa Nenhuma)

Enviado em 10/06/2017 - 18:21h

Você não aumenta arrays em C.

Você aloca memória com funções como malloc() e calloc(). Depois pode mudar o tamenho com realloc().

Em C++ as possibilidades são estas e outras mais, mas como não pratico não sei explicar.

Talvez a STL usando-se arrays com caracteres. Coisa assim.

----------------------------------------------------------------------------------------------------------------
Nem direita, nem esquerda. Quando se trata de corrupção o Brasil é ambidestro.
(anônimo)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts