Ir ao conteúdo
  • Cadastre-se

sequencia magica em c


Henrique Di Loreto

Posts recomendados

Olá, estou querendo entender este código. Ele imprime na tela uma sequencia assim, com 15 linhas.

1

11

21

1211

111221

312211

13112221

1113213211   etc..

 

A linha de baixo indica o numero de algarismos da de cima.

#include <stdio.h>#include <stdlib.h>int main(){	char *a = malloc(2), *b = 0, *x, c;	int cnt, len = 3, d = 0;	for (sprintf(a, "111"); (b = realloc(b, len * 2 + 1)); a = b, b = x) {		puts(x = a);		for (len = 0, cnt = 1; (c = *a); ) {			if (c == *++a)				cnt++;			else if (c) {				len += sprintf(b + len, "%d%c", cnt, c);				cnt = 1;			}		}		d++;		if (d==15) break;	}        system("pause");	return 0;

A minha duvida é nos laços for, que são diferentes dos comuns, falta parâmetros? tem compostos? A variável len 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. 

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para 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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!