Dev - C++ - AYUDA! ---- Programa en lenguaje C en programa Dev-C ++ ---- AYUDA!

 
Vista:

AYUDA! ---- Programa en lenguaje C en programa Dev-C ++ ---- AYUDA!

Publicado por Eduardo (2 intervenciones) el 08/05/2016 05:15:05
Alguien me puede ayudar o explicar como hacer una codigo en C parecido al siguiente:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <stdio.h>
#include <string.h>
#include <unistd.h>
 
int main()
{
   char banner[]={"ESTE ES UN EJEMPLO DE BANNER..."};
   unsigned short longitud, indice, espacio, repite, resto;
 
   longitud=strlen(banner);
   for (repite=1; repite<=3; repite++) /* repite el proceso 3 veces */
   {
/* ******** IMPRIME EN ORDEN DE IZQUIERDA A DERECHA Y LUEGO DESPLAZA ******** */
      for(resto=0; resto<=longitud; resto++) /* para caracteres restantes a imprimir */
      {   for (indice=0; indice<=longitud-1-resto; indice++) /* seleccion de indices evitando restantes */
         {
            printf("%c", banner[indice]); /* imprime indice */
            if (!resto) usleep(100000); /* demora el proceso */
         }
         for(espacio=1; espacio<=longitud-resto-1; espacio++)
            printf("\b"); /* retrocede */
 
         if (resto) usleep(100000); /* demora el proceso */
         printf("\b "); /* borra el caracter actual */
      }
 
      for(espacio=1; espacio<=longitud; espacio++) /* borra todos los caracteres presentados */
         printf("\b\b ");
      printf("\b"); /* se coloca al inicio del desplegado */
 
/* ************************************************************************** */
   }
 
   return 0;
}


Lo que hace el siguiente codigo es desplegar un tipo de banner al ejecutarlo podran observar que van apareciendo caracter por caracter y luego se desplaza, pero ahora lo que quiero que haga es que en vez de ir apareciendo caracter por caracter como si lo estuviesen escribiendo debe aparecer de izquierda a derecha pero desplazandose y regresarse de derecha a izquierda y de nuevo regresarse de izquierda a derecha 3 veces debe hacer eso, y para eso debe haber alguna funcion en donde me pida cuantas veces desea que se repita el desplazamiento y al ingresar un valor x de repeticiones debe repetirse

A quien pueda ayudarme se lo agradeceria mucho!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 661
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

AYUDA! ---- Programa en lenguaje C en programa Dev-C ++ ---- AYUDA!

Publicado por agustin (522 intervenciones) el 08/05/2016 21:22:08
La idea es tener un array de caracteres del tamaño de una línea de consola más uno.
Imagina la palabra "banner".
Colocas la palabra al inicio del array y el resto lo llenas de espacios.
Usas conio o ncurses similar para colocar el puntero en el inicio de la línea deseada.
Algo asi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#Include <stdio.h>
#include <string.h>
#include <ncurses.h>
#define SIZE 80
 
int main ()
{
    initscr();
    char banner[]="banner";
    char linea[SIZE];
    int i,r,nrepeticiones;
    int sizebanner=strlen(banner);
    strcpy(linea,banner);
    memset(&linea[sizebanner]," ",(SIZE - sizebanner)-1);
    linea[SIZE - 1]='\0';
    nrepeticiones=3;
    i=0;
 
    for (r=0;r <nrepeticiones;r++){
        while (i<SIZE - (sizebanner+1)){
            move(1,1);
            memset(linea," ",i);
            strncpy(&linea[i],banner,sizebanner);
            memset(&linea[i+sizebanner]," ",(SIZE-(i+sizebanner))-2);
            i++;
        }
        while(i > 0){
            move(1,1);
            memset(linea," ",i);
            strncpy(&linea[i],banner,sizebanner);
            memset(&linea[i+sizebanner]," ",(SIZE-(i+sizebanner))-2);
            i--;
        }
        printw ("%s",linea);
        refresh();
        sleep (1000);
    }
    endwin();
    return 0;
}
Ojo, no está probado, lo he codeado en el móvil así que puede haber errores pero la idea ya la tienes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar