[EP4 - Dúvida] Espaços, tamanho de alocação e tamanho máximo

[EP4 - Dúvida] Espaços, tamanho de alocação e tamanho máximo

por Victor Sanches Portella -
Número de respostas: 3

Então, ao terminar a parte grossa do EP4, comecei a refinar ele, para deixar a saida mais bonita e etc, e percebi que o executável constroi a posfixa separada certinha com espaços. Achei interessante e também fiz com que meu programa se comportasse da mesma forma.

Mas então percebi que existem alguns casos onde esses espaços fazem o tamanhoo da expressão praticamente dobrar.  Assim, o tamanho máximo da expressão infixa não seria mais 80.  Eu fiz um teste no executável do professor com uma sequencia de 2+2+... até completar 80 caracteres. Deu erro na pilha, stackPop em pilha vazia.

Eu acho que esse problema realmente seria um caos muito em particular, mas então me veio a dúvida, para a expressão pós-fixa, devo supor que ela terá no máximo 80 caracteres? (Assim, daria malloc em uma string com 80 caracteres)

E quanto aos espaços, posso fazer igual ao executável do professor,  ou devo tentar economizar espaço?

Em resposta à Victor Sanches Portella

Re: [EP4 - Dúvida] Espaços, tamanho de alocação e tamanho máximo

por Mateus Barros Rodrigues -

Alem de espaços serem necessarios quando os numeros na expressão vem juntos, de forma que pode dar erro no strtof(exemplo : 4-2 sairia como 42- mas não quer dizer que o numero era 42...)

Em resposta à Mateus Barros Rodrigues

Re: [EP4 - Dúvida] Espaços, tamanho de alocação e tamanho máximo

por José Coelho de Pina -

Alem de espaços serem necessarios quando os numeros na expressão vem juntos, de forma que pode dar erro no strtof(exemplo : 4-2 sairia como 42- mas não quer dizer que o numero era 42...)

É verdade.

Em resposta à Victor Sanches Portella

Re: [EP4 - Dúvida] Espaços, tamanho de alocação e tamanho máximo

por José Coelho de Pina -

Oi Vitor,

Então, ao terminar a parte grossa do EP4, comecei a refinar ele, para deixar a saida mais bonita e etc,

Excelente!

Assim, o tamanho máximo da expressão infixa não seria mais 80.  Eu fiz um teste no executável do professor com uma sequencia de 2+2+... até completar 80 caracteres. Deu erro na pilha, stackPop em pilha vazia.

O limite não está na infixaParaPosfixa, o limite está no

fgets(linha, MAX_TAMANHO, fentrada)

do esqueleto do EP3. Se vocês olharem o <tt>infixaParPosfixa</tt> que fizemos na aula, o tamanho da expressão infixa/posfixa é irrelevante para a função, já que a alocação é dinâmica.

A propósito, como o vetor foi declarado com MAX_TAMANHO posições, que é 80, o tamanho máximo da infixa deve ser 80 incluindo ai o '\0'. Vejam o tópico   [EP 4] Tamanho das linhas lidas no arquivo, postado pelo Renato.