Ayuda con este pequeño bucle

Iniciado por TheNorvamp, 23 Septiembre 2016, 08:47 AM

0 Miembros y 1 Visitante están viendo este tema.

TheNorvamp

Hola a todos, estoy empezando a estudiar programación, y en una de las clases hicimos un programa en el que usamos este bucle, pero ahora no sé como terminarlo correctamente:
Código (cpp) [Seleccionar]

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int main()
{
      printf("\n\t TAREA\n");
      color:
      Sleep(1000);
      system ("color e0");
      Sleep(1000);
      system("color d0");
      Sleep(1000);
      system("color c0");
      Sleep(1000);
      system("color 20");
      Sleep(1000);
      system("color b0");
      goto color;
}


Cuando empiezan a cambiar los colores, no sé cómo hacer que se detenga el proceso, sólo se queda en un bucle, pero intenté hacerlo con do-while de esta manera:
Código (cpp) [Seleccionar]


#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int main()
{
      do
      {
            Sleep(1000);
            system ("color e0");
            Sleep(1000);
            system("color d0");
            Sleep(1000);
            system("color c0");
            Sleep(1000);
            system("color 20");
            Sleep(1000);
            system("color b0");
      }
      while( !kbhit() );
      system([b]"PAUSE"[/b]);
}


Y funciona hasta cierto punto, presiono una tecla, pero debo esperar a que el ciclo termine completamente, o sea hasta que llegue al último system("color") para que se finalice, y lo que quiero es que en cuanto presione la tecla se detenga automáticamente, sin esperar que el ciclo llegue a la última línea.
Espero puedan ayudarme, gracias.

MAFUS


dato000

#2
Lo que necesita es declarar una variable q capture esa tecla que permita romper ese ciclo una vez que ha cumplido todo lo que se necesita, algo así, no tengo el compilador de c++ conmigo ahora:



#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int main()
{
     char tecla;

     do
     {
           Sleep(1000);
           system ("color e0");
           Sleep(1000);
           system("color d0");
           Sleep(1000);
           system("color c0");
           Sleep(1000);
           system("color 20");
           Sleep(1000);
           system("color b0");
         
           printf("\n Desea continuar el bucle?? (S/N): ");
           scanf ("%c",&tecla);
           if(tecla == 'N' || tecla == 'n')
           {
               break;
           }
     }
     while( tecla!= 'N'  || tecla != 'n' );
     
     return 0;
}



Seria cuestión de probar.



MAFUS

Crea un array de cadenas con cada color.
Crea una variable índice con valor 0.
Bucle mientras no se haya pulsado una tecla:
    Muestra el contenido de la posición índice.
    Suma 1 al índice.
    ¿Índice está fuera del array?
        Dar valor 0 a índice.
Fin del bucle.