El break y el ciclo infinito

Ya vimos hace poco el ciclo for, y vimos que su estructura era así:

for ( inicio ; fin ; aumento )

¿Qué pasa si no ponemos ni inicio ni fin? Pues obtenemos un ciclo infinito, así:

for(;;)

¿Y cómo se detiene? Pues con un break, así:

for(;;)
{
break;
}

¿Y esto de que me sirve? Pues la idea es repetir las instrucciones hasta que el usuario quiera, es decir:

#include<stdio.h>
#include<conio.h>
int main()
{
  char end=0;
  for(;;)
  {
    gotoxy(5,5);printf("Ya quieres salir? (y/n): ");scanf("%c",&end);
    if(end=='y')
      break;
    clrscr();
  }
}

Creo que no les había mencionado que si dentro de una condición if sólo va una instrucción no es necesario poner llaves, y también aplica con los ciclos.

Si el usuario no introduce una ‘y’, el programa nunca se detendrá. Luego vamos a ver que las propiedades de un ciclo for infinito son muy parecidas a las del ciclo while que veremos más adelante.

23 thoughts on “El break y el ciclo infinito

  1. /*estoy realizando un ejercicio similar pero me genera error y no se porque me podrían ayudar.
    gracias*/

    #include
    int main()
    {
    int cant,total;
    char prod[20];
    cout<<"Ciclo infinito for"<<endl<<endl;
    cout<<"Gastos caja China"<<endl;
    cout<<"Ingrese la cantidd de productos a comprar"<>cant;
    cout<<"Ingrese el tipo de producto a registrar"<>prod;
    total*=cant;
    cout<<total<<" Es el valor a pagar"<<endl;
    for(;;)
    {
    cout<<"Quieres terminar y salir del ciclo si/no"<<endl;
    if(end=="si")
    break;
    }
    }

    1. No puedes igualar esto if(end==”si”) para esto necesitas una libreria llamada string.h y usar el strcmp (string compare).

  2. Pues dejando de lado la (confusa) primera parte de tu progama, el ciclo infinito quedaría así:

    #include
    #include
    using namespace std;
    
    int main()
    {
        char end[10];
        cout<<"Ciclo infinito for"<<endl<<endl;
        for(;;)
        {
            cout<<"Quieres terminar y salir del ciclo si/no: ";
            cin.getline(end, 10, 'n');
            if(strcmp(end,"si")==0)
                break;
        }
    }

    Te faltaba declarar el namespace de la librería iostream. Tal vez quieras checar este post sobre cómo usar cin y cout: http://codigoc.org/280-como-empezar-a-usar-iostream . Si quieres que el programa se acabe al escribir “si”, entonces hay que usar strings (librería string.h), para leer un string hay que usar cin.getline: http://codigoc.org/464-como-usar-cin-getline-en-c y para compararlas hay que usar la función strcmp: http://www.cplusplus.com/reference/clibrary/cstring/strcmp/

    Si todo esto es muy confuso dime y te preparo una versión más simple de lo mismo.

    1. como le hago para que una vez que en el programa se escoge la opción para terminar el ciclo, se imprima un resultado???

      1. Depende de que resultado requieras, en el if donde haces el brake añades una linea donde iguales una variable al resultado, y luego, despues del ciclo la imprimes.

  3. Gracias por la respuesta, pero el ejercicio exactamente dice así:
    Desarrollar un programa que use un ciclo for infinito y un estatuto break, para el cual se desea calcular los gastos diarios de la caja chica de un bufete de consultoría en sistemas. Mostrar en pantalla el gasto total. Los gastos pueden ser diversos como papelería, lápices, copias, etc. Recuerde que el ciclo infinito no termina, por lo tanto el uso del estatuto break es para romper el ciclo infinito, por lo tanto tendrá que validar para romper el ciclo infinito y salir.

  4. ,,por favor necesito saber q es ,,pomper un ciclo infinito ,,,,,y un ejemplo por lo menos ,,,,,,le agradesco al q me ayude gracias…!!!!!!

  5. hola que tal?
    bueno pues debo hacer 3 programas, uno lo tengo hecho pero no me corre bien, y otros dos que de plano no se que haer me podrian ayudar por favor?
    uno es :
    Escribe un programa que al recibir como dato un numero entero N calcule el resultado de la siguiente serie:
    1+ 1/2+1/3+1/4+….1/n
    ese es uno de los programas los otros 2 son un poco mas largos son de el libro fundamentos de programacion piensa en c de cairó

    http://books.google.com.mx/books?id=AZ1ZXBlu9Y8C&printsec=frontcover&dq=piensa+en+c&hl=es&ei=CahqTfPWDYGasAOgutimBA&sa=X&oi=book_result&ct=result&resnum=1&ved=0CCQQ6AEwAA#v=onepage&q&f=false

    ese es el libro de la pag 129 ocupo el 3.2 el 3.6 i de la pagina 131 el 3.9 me haria un enorme favor si me pudieran ayudar
    de antemano gracias🙂

  6. necesito hacr u programa d una kja registradora pero necesito husar gotos, if y while, m ya tengo la mator part pero le tengo k aumentar el goto xy y no s como utilizarlo m puedn ayudar????

  7. hola que tal, hice una pequeña calculadora, pero quiero que cuando termine de calcular, me de la opción de regresar al principio y que no se cierre!
    como le puedo hacer? es esta:

    #include
    #include
    main()
    {
    float num1;
    float num2;
    printf(“n Area de Un Triangulon”);
    printf(“n Base del triangulo: “);
    scanf(“%f”,&num1);
    printf(“n Altura del triangulo: “);
    scanf(“%f”,&num2);
    printf(” _______________n”);
    printf(“n El area del triangulo es= %.1f nn”,num1*num2/2);
    system(“pause”);
    }

    1. Tienes que utilizar un “for (;;){} desde donde hasta donde quieras la repeticion; …de esta manera:

      #include
      #include
      main()
      {
      float num1;
      float num2;

      for(;;)
      {
      printf(“n Area de Un Triangulon”);
      printf(“n Base del triangulo: “);
      scanf(“%f”,&num1);
      printf(“n Altura del triangulo: “);
      scanf(“%f”,&num2);
      printf(” _______________n”);
      printf(“n El area del triangulo es= %.1f nn”,num1*num2/2);
      system(“pause”);
      }
      }

  8. Hola que tal? pues he estado recorriendo todo tu blog y no encuentro algo parecido, y tengo un problemilla que me gustaria me ayudaran.

    tengo que hacer un programa para un empleado (en su mayoria esta hecho), pero una condicion es que si el empleado tiene 3 retardos se le descuente un dia , pero como hacer que descuente dos dias en caso de que yo ingrese que tuvo 6 retardos? o 9? podrian ayudarme? creo que es con un for, pero no estoy del todo seguro

  9. 8 C:Dev-Cppproyecto4.cpp `gotoxy’ undeclared (first use this function) al compilarlo me arroja este error, cómo puedo solucionarlo?

    1. Necesitas añadir la libreria conio.h, lo hiciste? talvez eso es lo que te faltaba, si perciste el problema asmelo saber en mi correo.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s