Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: EduardoSaenz en 7 Mayo 2016, 19:45 pm



Título: AYUDA! ---- Programa en lenguaje C en programa Dev-C ++ ---- AYUDA!
Publicado por: EduardoSaenz en 7 Mayo 2016, 19:45 pm
Alguien me puede ayudar o explicar como hacer una codigo en C parecido al siguiente:


#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!


Título: Re: AYUDA! ---- Programa en lenguaje C en programa Dev-C ++ ---- AYUDA!
Publicado por: AlbertoBSD en 7 Mayo 2016, 20:02 pm
Jajaja nunca habia usado printf para retroceder en la salida estandar  ;-)  ;-) ;-)

Código
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include <unistd.h>
  4.  
  5. void banner(char *b,int repetir);
  6.  
  7. int main() {
  8. banner("Lalalala",4);
  9. }
  10.  
  11. void banner(char *b,int repetir) {
  12. int i,j,len;
  13. len = strlen(b);
  14. i = 0;
  15. while(i < repetir) {
  16. j = 0;
  17. while(j <len) {
  18. printf("%c",b[j]);
  19. j++;
  20. usleep(1000);
  21. }
  22. j = 0;
  23. while(j <len) {
  24. printf("\b\b");
  25. printf("  ");
  26. printf("\b\b");
  27. j++;
  28. }
  29. i++;
  30. }
  31. }


Título: Re: AYUDA! ---- Programa en lenguaje C en programa Dev-C ++ ---- AYUDA!
Publicado por: EduardoSaenz en 7 Mayo 2016, 20:56 pm
Jajaja yo tampoco sabia este programa me lo paso mi profesor de programacion y no me lo quiso explicar solo me dijo usalo de ejemplo y haz esto y esto...  :-\ y muchas gracias por tu codigo pero no hace lo que necesito que haga  :-( pero muchas gracias Alberto!

Se supone que en vez de que se vallan escribiedo las letras deben aparecer pero desplazandose de un lado a otro y ocultandose

algo asi como el ejemplo alternate de este pagina
http://ortihuela.galeon.com/html16.htm (http://ortihuela.galeon.com/html16.htm)


Título: Re: AYUDA! ---- Programa en lenguaje C en programa Dev-C ++ ---- AYUDA!
Publicado por: AlbertoBSD en 7 Mayo 2016, 21:29 pm
A lo que necesitas es emular el efecto de la etiqueta HTML MARQUEE

Cuando empece con C usabamos TurboC y ahi hice muchas cosas con conio.h pero cuando vi que no era estandar deje de usarlo...

Esos profes en lugar de Ayudar enredan mas el asunto, ¿por que pedir programa con efectos bonitos? si muchas veces los alumnos no pueden con otras estructuras de datos...

Deja veo como te puedo ayudar, la idea del ejemplo que te mostré es casi la misma solo que en lugar de aparecer de una en una hay que aparecer toda la cadena, borrarla y volver a aparecer pero ahora desfasada en un espacio.

Trata de modificar algo con lo que sabes si tienes dudas pregunta por esas dudas, no pidas trabajos terminados por que luego te borran el tema o lo bloquean..


Título: Re: AYUDA! ---- Programa en lenguaje C en programa Dev-C ++ ---- AYUDA!
Publicado por: MAFUS en 7 Mayo 2016, 23:38 pm
En verdad para hacer eso te puedes romper la cabeza usando printf, putchar, '\b' y todo eso; hacer uso de las funciones de tu S.O. para manejar la ventana de texto o puedes usar bibliotecas como ncurses que te dan un control fino y además es portable.