TÓPICO

Problema na entrada (EOF)

Prof.MozarSilva perguntou 1 year ago

O ultimo elemento da entrada nao tem o pulo de linha.

isso implica que nao se pode testar o FEOF, pq apos ele ler o ultimo inteiro, ja da o FEOF

scanf("%lld",&n);
while ( !feof(stdin) ){
       ......
      scanf("%lld",&n);
}

então precisa alterar para:

while (  scanf("%lld",&n) == 1){
       ......
}

ou

n=0;
scanf("%lld",&n);
while ( n>0 ){
       ......
      n = 0;
      scanf("%lld",&n);
}

o mesmo vale para outras lingugens ex PHP, tive que colocar o teste se a linha veio com conteudo, assim ele ignora o feof, e funcionaria nas duas situacoes, onde a ultima entrada tem o pulo de linha ou nao.

    $linha=rtrim(fgets(STDIN),"\n");
    while ( !feof(STDIN) || strlen($linha)>0){
    ...
        $linha=rtrim(fgets(STDIN),"\n");
    }
?>

Lembre de não publicar soluções. Sua publicação pode ser revisada por nossos moderadores.

  • MatheusHirth respondido 1 year ago

    Olá, eu já estava usando a 1ª solução em C que você citou, depois de vir aqui testei a 2ª, mas nenhuma das 2 estão resolvendo o Time limit exceeded, saberia o porquê?