Ir ao conteúdo

LinsmarVital

Membro Júnior
  • Posts

    1
  • Cadastrado em

Reputação

1
  1. Bom, tenho um trabalho pra fazer em c/c++ que funciona da seguinte maneira: Existe um arquivo de entrada .txt, com 2 listas de números, tenho que pegar essas 2 listas, juntar as 2 e me livrar das duplicatas e jogar o resultado em outro txt, exemplo: entrada.txt: [1 2 23 42] [3 32 4 23 1] saida.txt: [1 2 3 4 23 32 42] Não precisa estar ordenado que nem no exemplo acima. Eu fiz, lendo char por char, ignorei o primeiro '[', depois verifiquei se vinha algo diferente de ']' em seguida e se viesse, eu ia pondo o caracter num array que fiz assim: char *caracVetor = (char *) malloc(sizeof(char)*2147483647); Quando chegasse no espaço, parava e transformava o array em inteiro, com a função atoi. //Passando o que tem dentro do arquivo para a 1ª lista fscanf (in, "%c", &caracter); //Lendo o caracter '[' for (; caracter != ']';) { //O for funciona enquanto caracter for diferente de ] fscanf(in, "%c", &caracter); if (caracter == ']') break; //Se achar o caracter ] logo de cara, acaba o loop. else { //Se não: for (int o = 0; caracter != ' '; o++) { //Loop pra pegar números grandes caracVetor[o] = caracter; //Joga o caracter dentro do vetor de caracteres fscanf (in, "%c", &caracter); //Ve quem é o proximo no arquivo if (caracter == ' ' || caracter == ']') { //Se for espaço ou ], acaba aux = atoi(caracVetor); //Transforma o vetor de caracteres em inteiro break; } } insert(aux, h1); //Insere na lista 1 qntdLista1++; free(caracVetor); } } Está dando tudo certo, o problema é o seguinte(paranoia minha): E se o professor por como exemplo um número maior que 2147483647? Entendo que posso mudar a struct da lista e fazer ela aceitar long int invés de só int e também posso aumentar esse número no malloc, mas tudo tem 1 limite. Existe alguma forma de quebrar esse limite? Se o professor por um número como "9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999" existe alguma forma de eu pegar ele no arquivo e transformar em inteiro depois? Ou é impossível e nem preciso me preocupar com isso?

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...