iagoac / mc202

Disciplina MC202 - Estruturas de Dados
GNU General Public License v3.0
17 stars 13 forks source link

[Lab4] Comportamento inesperado da função atoi. #77

Closed passarellafelipe closed 4 years ago

passarellafelipe commented 4 years ago

Dependendo do teste que rodo, a função atoi retorna um número completamente aleatório, não consegui compreender o motivo até agora.

Exemplo de retorno do Susy com a função atoi

Exemplo sem a função, imprimindo a string

Os testes em que imprimo a string aparentemente só dão errado por causa dos zeros a esquerda.

O que eu fiz no meu código foi:

  1. Resolvo o problema usando pilha, o topo da pilha contém o último digito do número desejado.
  2. Aloco um vetor de chars auxiliar de tamanho n-k, onde n é a quantidade de dígitos de N: char* aux = (char*)malloc(sizeof(char)*(n-k))
  3. Desempilho minha solução nesse vetor. Como na pilha a solução está ao contrário, faço o seguinte loop: for(int j=n-k-1; j>=0; j--) { aux[j] = pop(solucao); }
  4. Aplico a função atoi nesse vetor auxiliar e mando imprimir: printf("%d", atoi(aux))
passarellafelipe commented 4 years ago

Ops, acabei de perceber o erro. A função que dá certo é atol, com L e não I no final. Alguns números só cabem em Long Int.