Ir ao conteúdo
  • Cadastre-se

Sequência look-and-see


Posts recomendados

Olá, bom dia pessoal !  Estou com dificuldade para compreender este código:

 

#include <stdio.h>#include <stdlib.h>int main(){     char *a = malloc(2), *b = 0, *x, n;     int cont, tam = 3, d =0;     for (sprintf (a, "456"); (b =  realloc (b, tam * 2 +1)); a = b, b = x)           {               puts (x=a);               for (tam = 0, cont =1; (n = *a)               {                       if (n == *++a)                             cont++;                       else if (n)                            {                                 tam = tam + sprintf(b + tam, "%d%c", cont, n);                                 cont = 1;                            }               }           d++;           if (d==17) break;  }     return 0;}
Ele imprime na tela a sequência chamada "Look-and-See", que funciona assim: começa com qualquer valor, daí então, na linha seguinte é impresso a quantidade de algarismos iguais e diferentes que estão contidos. Por exemplo:
 
456
141516
111411151116
311431153116
132114132115132116
111312211411131221151113122116
311311222114311311222115311311222116
etc..
 
As minhas dúvidas são nos laços for, que são diferentes dos comuns, faltam parâmetros? Tem compostos? A variável tam começa valendo 3, mas depois dentro do laço do for ela vale zero? A função sprintf dentro do primeiro for tem valor 3? Por que se alterar os caracteres 111 para quatro algarismos não funciona, também se foram alocador só 2 bytes pelo malloc para o ponteiro. 
 
Um abraço,
Henrique.
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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...