• Domingo 28 de Abril de 2024, 22:10

Autor Tema:  Re: Loop para repetir una rutina a peticion y mas cosas xD  (Leído 2646 veces)

Lucia

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Re: Loop para repetir una rutina a peticion y mas cosas xD
« en: Viernes 29 de Noviembre de 2002, 19:55 »
0
En fins a ver si me explico a mi lo q me gustaria es ejecutar mi programa y cuando acabase dar la opcion de hacer todo de nuevo, en plan "quiere hacer esto de nuevo? s/n" el usuario mete lo q quiera y si es si repite y si no sale. Yo hice algo mas o menos pero es q no se repetia una vez pero si no dos veces seguidas sin dar opcion de elegir y eso no me parece muy correcto, si alguien me dice se lo agradezco mucho. es q en mi facultad se centran tanto en la parte matematica de la programacion, que cuando llega la hora de algo con caracteres no doy pie con bola xD.

Y de paso, necesito añadir una libreria para usar la funcion new? en plan noseq =new loquesea ? q me dice q new esta sin definir y ami solo se me ocurre q no haya metido la libreria adecuada

mas gracias

De Profundiis

  • Miembro activo
  • **
  • Mensajes: 89
    • Ver Perfil
Re: Loop para repetir una rutina a peticion y mas cosas xD
« Respuesta #1 en: Sábado 30 de Noviembre de 2002, 01:19 »
0
Hola Lucia,

digo yo que para repetir la rutina solo necesitarás una instrucción del tipo repeat... until.
Lo que pasa es que en C se llama do...while.

podrí­as hacer....

char q;

do{

     rutina a implementar
      printf("Desea repetir la rutina?n");
      q = getchar();
}while (q=='s');

O podrí­as usar un scanf("Desea repetir la rutina?  %cn", q); en lugar del printf y el getchar.

Y en cuanto al new eso es para crear un nuevo objeto. En C++ necesitarás la librerí­a iostream.h si no me equivoco y, por supuesto, tener definido el objeto.

Bueno, espero haber sido de ayuda.
Un saludo.

Lucia

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Re: Loop para repetir una rutina a peticion y mas cosas xD
« Respuesta #2 en: Miércoles 4 de Diciembre de 2002, 13:49 »
0
char q;
int cnt=0;

do{
   printf("%d", cnt);
   q=getchar();
   cnt++;
}while(q=='y');

ponga lo ponga me sale del programa aparte de q tengo un warning q no se q quiere decir:

 warning: no newline at end of file

gracias

observador

  • Miembro activo
  • **
  • Mensajes: 65
    • Ver Perfil
    • http://www.soloprogramacion.net/
Re: Loop para repetir una rutina a peticion y mas cosas xD
« Respuesta #3 en: Miércoles 5 de Marzo de 2003, 08:44 »
0
Bien... analice el codigo de tu programa y creo que equivocaste tu logica para la badera de salida...

Es decir, en la linea de codigo:

while(q=='y');

lo que estas diciendo es

do //hacer
     //estas instrucciones
while//mientras la variable q sea igual a 'y'

osea que se vuelva a repetir el ciclo do... while... solo si la variable q es igual a 'y'... pero ¿es eso lo que quisiste decir?

Ahora... otro punto muy importante, tu estas utilizando la funcion getchar() la cual tiene el inconveniente de que no solo te acepta el primer valor que se teclea, sino que utiliza un buffer para guardar todos los caracteres que se teclean hasta encontrar un enter inclusive el enter tambien se almacena en el buffer como otro caracter mas asi que aunque en tu codigo original teclees 'y' seguido de un enter, en el while se comparara si en igual a y, como el primer caracter tecleado si es 'y' se vuelve a meter al cilclo pero ya no pide que se precione otra tecla pues el buffer no esta vacio todavia... acto seguido se vuelve ejecutar el while comparando ahora el caracter 'n' [que es el traducido como enter por la funcion getchar()] con el caracter 'y' como ahora ya no se cumple la condicion al ser 'n' diferente que 'y' entonces el ciclo termina y nunca ves que se vuelva repetir, aunque si lo hace, pero recuerda, toma como siguiente caracter el que esta contenido en el buffer hasta que este se vacia...

Aqui te agrego el archivo fuente modificado. La linea original:

q=getchar();

fue sistituida por:

q=getch();

con la difereccia que esta fucnion no muestra eco...

En este codigo trate de respetar tu logica original con respecto a la bandera. Por lo tanto el codigo que te adjunto no saldra del ciclo... y estara imprimiendo los valores de la variable cnt siempre y cuando preciones una 'y' en el teclado... si precionas una letra diferente de 'y' el programa terminara de forma correcta.

No intentes precionar una tecla de funcion (opr ejemplo F1) pues aunque no generara error, tal vez te confundas... pero esa es otra historia...

Y con respecto al warning que dices te marcaba, a mi no me marco nada...

Bueno espero no haberte confundido...

Hasta pronto...
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
Solo Programacion Net

Hasta pronto...

Quoyle

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
Loop para repetir una rutina a peticion y mas cosas xD
« Respuesta #4 en: Miércoles 5 de Marzo de 2003, 10:40 »
0
También dispones de la funcion getche() que hace exactamente lo mismo que getch() pero haciendo eco por pantalla. Creo que esta función se encuentra en conio.h.

Tambien puedes seguir utilizando getchar() pero entonces deberas vaciar el buffer después de recoger el caracter. Esto es haciendo fflush(stdin). stdin es el fichero standard de entrada. fflush() se encuentra en stdio.h.

char q;
int cnt = 0;

do
{
  printf("%d", cnt);
  q = getchar();
  fflush(stdin);
  cnt++;
} while (q == 'y');

Suerte, todos esperamos poder ser de ayuda;) :alien:
Actual Generation oOo Quoyle oOo Remember: Free your mind