Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Luan Bresolla

C Letreiro dinâmico programa em c

Recommended Posts

Postado (editado)

Fala galera, estou fazendo um trabalho e estou com dificuldade, tenho que fazer um programa que leia uma palavra e mostre ela como se estivesse em um letreiro dinâmico.Ex: lua, -> alu -> ual -> lua. Primeiramente tentei fazer sem palavras, somente com números pra facilitar e depois iria mudar, mas não estou conseguindo nem com os números. Segue o código do programa utilizando números. Ele da um bug e não para de aparecer 0 na tela kk

 

int main(){    
    int num[5],i;    
    for(i=0;i<=5;i++){
        printf("Digite um numero: ");
        scanf("%d",&num);
    }    
    for(i=5;i<=5;i--){
        printf("%d ",num);
    }    

}

 

Editado por DiF
Botão CODE <>
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

@Luan Bresolla Lembre-se, INT não é infinito, mesmo fazendo fazendo o sentido reverso no for, o int vai bater no numero mínimo e vai parar a interação. Isso também não é dinâmico, é apenas um "animação visual".

Usando um vetor (array) estático, o problema é tamanho do letreiro, aqui fiz em 3 caractere por vez:

...//seu codigo
while ( variavel_char ){//enquanto existir
	aux = variavel_char[i];
	aux2 = variavel_char[i++];
	variavel_char[i] = aux2;
	variavel_char[i++]= variavel_char[2];
	variavel_char[2] = aux;
}
...//resto

O certo era criar uma fila dinâmica onde se altera dinamicamente o começo e o final, fazendo assim o "texto andar", e exibir as atualizações na tela.

Editado por zopek
era aux2 no lugar de variavel_char[aux2];
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
16 minutos atrás, zopek disse:

@Luan Bresolla Lembre-se, INT não é infinito, mesmo fazendo fazendo o sentido reverso no for, o int vai bater no numero mínimo e vai parar a interação. Isso também não é dinâmico, é apenas um "animação visual".

Usando um vetor (array) estático, o problema é tamanho do letreiro, aqui fiz em 3 caractere por vez:


...//seu codigo
while ( variavel_char ){//enquanto existir
	aux = variavel_char[i];
	aux2 = variavel_char[i++];
	variavel_char[i] = variavel_char[aux2];
	variavel_char[i++]= variavel_char[2];
	variavel_char[2] = aux;
}
...//resto

O certo era criar uma fila dinâmica onde se altera dinamicamente o começo e o final, fazendo assim o "texto andar", e exibir as atualizações na tela.

Não consegui entender seu código, a logica no caso.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Luan Bresolla Explicando:

  • Vetor char de 3 caractere;
  • 2 variáveis auxiliares.

Os auxiliares recebem os 2 primeiros;

O ultimo char passa para o segundo;

O primeiro recebe o segundo auxiliar;

O ultimo recebe o primeiro auxiliar;


Exemplo: SOL

Exibiu: SOL

1º loop:

  1. aux = S
  2. aux2 = O
  3. char[0] = L
  4. char[1]= AUX2
  5. char[3]= AUX
  6. Exibiu:LSO

2º loop:

  1. aux = L
  2. aux2 = S
  3. char[0] = O
  4. char[1]= AUX2
  5. char[3]= AUX
  6. Exibiu:OLS

2º loop:

  1. aux = O
  2. aux2 = L
  3. char[0] = S
  4. char[1]= AUX2
  5. char[3]= AUX
  6. Exibiu:SOL

E vai indo...

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 horas atrás, zopek disse:

@Luan Bresolla Explicando:

  • Vetor char de 3 caractere;
  • 2 variáveis auxiliares.

Os auxiliares recebem os 2 primeiros;

O ultimo char passa para o segundo;

O primeiro recebe o segundo auxiliar;

O ultimo recebe o primeiro auxiliar;


Exemplo: SOL

Exibiu: SOL

1º loop:

  1. aux = S
  2. aux2 = O
  3. char[0] = L
  4. char[1]= AUX2
  5. char[3]= AUX
  6. Exibiu:LSO

2º loop:

  1. aux = L
  2. aux2 = S
  3. char[0] = O
  4. char[1]= AUX2
  5. char[3]= AUX
  6. Exibiu:OLS

2º loop:

  1. aux = O
  2. aux2 = L
  3. char[0] = S
  4. char[1]= AUX2
  5. char[3]= AUX
  6. Exibiu:SOL

E vai indo...

valeu muito obrigado <3

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

@Luan Bresolla     será mais fácil se você usar um vetor de caracteres , assim você pega a frase e coloca nesse vetor , e imprime todos os caracteres do vetor , um por um , começando da posição zero , e então você precisa mover as letras lá no vetor de caracteres , se for uma palavra ou frase com letras ou números , pegando o primeiro caractere do vetor e em seguida puxa todos os outros caractere uma posição para a esquerda  e coloca , aquele primeiro caractere que você pegou , lá na última posição do vetor e repete essa parte de imprimir os caracteres .  então seu código com algumas modificações ficaria assim  :

#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <windows.h>
typedef enum{BLACK,BLUE,GREEN,CYAN,RED,MAGENTA,BROWN,LIGHTGRAY,DARKGRAY,
LIGHTBLUE,LIGHTGREEN,LIGHTCYAN,LIGHTRED,LIGHTMAGENTA,YELLOW,WHITE} COLORS;

static int __BACKGROUND = BLACK;
static int __FOREGROUND = LIGHTGRAY;

void textcolor (int color){/*para mudar a cor de fundo mude o background*/
    __FOREGROUND = color;/*pode ser também pelo nome da cor */
    SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
    color + (__BACKGROUND << 4));
}
void gotoxy(int x,int y){
    COORD c;
    c.X = x;
    c.Y = y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
}
int main(){
    char palavra[100],aux;
    int i,key=0,tam,cor;
    srand(time(NULL));
    printf("Digite Uma Frase De Ate 78 Letra : ");
    fflush(stdin);
    gets(palavra);
    tam = strlen(palavra);
    if(tam > 78 )  tam=78;
    palavra[tam+1] =  '0';
    palavra[tam  ] =  ' ';
    tam++;
    system("cls");
    printf("\n\n\n\n ");
    for(i=0;i<tam;i++)
        printf("-");
    printf("\n|\n ");
    for(i=0;i<tam;i++)
        printf("-");
    gotoxy(15,12);
    printf("Tecle ESC Para Sair !");
    cor=rand()%14+1;
    textcolor(cor);
    cor=10;
    do{
        textcolor(cor);
        gotoxy(1,5);
        aux=palavra[0];
        for(i=0;i<tam;i++){
            printf("%c",palavra[i]);/*imprime letra por letra*/
        }
        textcolor(7);
        printf("|");
        for(i=0;i<tam;i++)
            palavra[i]=palavra[i+1];/*puxa todas as letras uma posição para a es querda */
        palavra[tam-1]=aux;         /* coloca a primeira letra nessa ultima posição */
        Sleep(150);                 /* velocidae que as letras se movem */
        if(kbhit())key=getch();     /* se pressionou alguma tecla */
    }while(key != 27);              /* se tecla pressionada não for ESC repete*/
    gotoxy(0,18);
    printf("\n\n");
    textcolor(cor);
    return 0;
}

 

Editado por devair1010

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×