Olá pessoal…
Hoje vou mostrar como fazer um Letreiro simples em Linguagem C, com uma String de 10 posições e programado para dar 3 voltas.
Primeiro para se fazer um letreiro, deve-se pensar na lógica de como irá funcionar o texto a ser impresso, para isso, no programa abaixo, além da variável que irá guardar o texto (palavra), também criei uma variável de cópia do conteúdo (copia), e através da definição do tamanho das strings (tamanho), é percorrido as voltas (volta_atual e voltas) e copiando o conteúdo da palavra para a copia, quando acaba, então é feito a cópia do começo da palavra para o fim da copia, posição por posição, até chegar no início da palavra. Por exemplo:
palavra: |daniel| Primeira parte do programa (cópia normal): copia: |aniel | copia: |niel | copia: |iel | copia: |el | copia: |l | copia: | | Segunda parte do programa (do começo da palavra para o fim da cópia): copia: | d| copia: | da| copia: | dan| copia: | dani| copia: | danie| copia: |daniel|
Conforme o exemplo acima, com isso a volta fica alterando entre as duas partes do programa, criando o letreiro.
Abaixo um print do programa em execução.
//Bibliotecas #include#include //Se o sistema for Windows, a limpeza utiliza a funcao cls #ifdef WIN32 #define LIMPA_TELA system("cls"); //Se for Linux, utiliza a funcao clear par alimpeza da tela #else #define LIMPA_TELA system("/usr/bin/clear"); #endif //Espera 1 segundo #define ESPERA sleep(1); main(){ int tamanho = 9; int voltas = 2; int volta_atual = 0; int atual = 0; int auxiliar = 0; int pos_copia = 0; int posicao = 0; int quantidade = 0; int tipo = 0; char palavra[tamanho+2]; char copia[tamanho+2]; //Zera a string for (atual=0;atual<=tamanho;atual++){ palavra[atual] = ' '; } //Pega a string printf("Insira a string (maximo de %d caracteres): \n> ", tamanho+1); gets(palavra); //Pegando o tipo de impressao while (tipo != 1 && tipo != 2){ printf("Deseja mostrar somente o letreiro (1=Sim; 2=Nao)?"); scanf("%d", &tipo); } //Zera a string onde tiver o \0, deixando somente na última posicao for (atual=0;atual<=tamanho;atual++){ if (palavra[atual] == '\0') palavra[atual] = ' '; } palavra[tamanho+1] = '|'; palavra[tamanho+2] = '\0'; //Limpando a tela e imprimindo a primeira vez LIMPA_TELA; if (tipo == 1) printf("%s", palavra); else printf("Original: ...%s...\nLetreiro: ...%s...\nVolta: %d de %d", palavra, palavra, volta_atual+1, voltas+1); ESPERA; //Zera a copia for (atual=0;atual<=tamanho+1;atual++){ copia[atual] = ' '; } palavra[tamanho+2] = '\0'; //Percorre as voltas for (volta_atual=0; volta_atual<=voltas; volta_atual++){ //Impressao normal for (posicao=0;posicao Bom pessoal, por hoje é só.
Abraços e Até a próxima.

Dan, mais uma vez parabenizo-te pela excelência do material postado. Se possível gostaria da sua autorização para reblogá-lo. Força e Honra!
Bom dia Fernando, tudo bem?
Primeiramente muito obrigado.
Claro que pode, para mim será uma honra.
Abraços.