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?
[EP4 - Dúvida] Espaços, tamanho de alocação e tamanho máximo
Re: [EP4 - Dúvida] Espaços, tamanho de alocação e tamanho máximo
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...)
Re: [EP4 - Dúvida] Espaços, tamanho de alocação e tamanho máximo
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.
Re: [EP4 - Dúvida] Espaços, tamanho de alocação e tamanho máximo
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.