system ("pause");

Iniciado por ductum fusti percusit, 29 Marzo 2015, 22:04 PM

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

ductum fusti percusit

Se puede hacer que al poner system ("pause"); dentro de un bucle anidado, haya que poner una palabra o letra específica para que continúe ejecutándolo?
Gracias.

daryo

#1
buenas

ductum fusti percusit

Se me olvido decir que era en c no en c++.

daryo

bueno si te refieres a evitar el enter y solo haga falta presional una tecla no se puede en c++/c estandar tendrias que usar una herramienta externa (ncurses,conio) o la api de windows .No se muy bien como se haria en linux.

hay muchos ejemplos en internet.
buenas

mimel

Amigo, acabo de encontrar la solución a eso, como en linux no recibe el system("pause"); entonces toca hacer un pequeño ciclo con el getchar y es el siguiente:

getchar();
while (getchar() != '\n' )
;

un programa mas sencillo donde lo ejecuta mejor:
#include <stdio.h>

int main(int argc, char *argv[]) {

int i;
for (i = 0; i < 3; i++)
{

printf("i = %d\n", i);
printf("Presione enter para continuar: ... ");

while ( getchar() != '\n')
;
}
printf("\n\n");
printf("Esto es todo!!\n");
printf("presiona enter para terminar!! (ironico, no es cierto?) ...");
while (getchar() != '\n')
;
printf("\n\n");
printf("esto es todo :D\n");

}


PERO en un programa mas complejo debes leer antes el getchar:
#include <stdio.h>

int main(int argc, char *argv[]) {

int valor_kilo,i,kilos,descuento,total,ganancias=0;
printf("Ingrese el valor por kilo de naranjas: ");
scanf("%d",&valor_kilo);

for(i=1;i<5;i++)
{
system("clear");
printf("=================CLIENTE %d=========================\n",i);
printf("Digite la cantidad de kilos de naranjas compradas: ");
scanf("%d",&kilos);
total=kilos * valor_kilo;
if(kilos >10)
{
descuento = total * 0.10;
total = total - descuento;
printf("El cliente compro: %d kilos.\nDescuento del 10(%) es de: %d.\nTotal a pagar: $%d\n\n",kilos,descuento,total);
}
else{
printf("El cliente compro: %d kilos.\nSin Descuento\nTotal a pagar: $%d\n\n",kilos,total);
}

ganancias = ganancias + total;
printf("Presione una tecla para continuar: ...");
getchar();/*Aca lees el enter*/
while (getchar() != '\n' )
;

}
system("clear");
printf("========================================================\n");
printf("las ganancias que recibio la tienda es de: $%d pesos",ganancias);

}


Espero que hallas entendido!
mimel
implementador de software libre
Estudiante de Desarrollo de Software
Colombia-Huila-Neiva

sabeeee

Sinceramente yo usaría solamente "getchar()" no se necesita mucho mas que eso. en C y  C++.
"Vengándose, uno iguala a su enemigo; perdonando, uno se muestra superior a él."
Francis Bacon

rir3760

Cita de: ductum fusti percusit en 29 Marzo 2015, 22:04 PMSe puede hacer que al poner system ("pause"); dentro de un bucle anidado, haya que poner una palabra o letra específica para que continúe ejecutándolo?
No ya que el comando "pause" solo requiere de la pulsación de una tecla, nada mas.

La operación la tienes que realizar de forma manual:
1) Indicas al usuario que debe introducir un determinado carácter o palabra para continuar.
2) Lees la entrada del usuario.
3) Verificas si es la correcta o no.

Si se trata de un solo carácter puedes leer este con la función getchar, en el caso de una palabra con scanf. Para verificar la entrada si es un carácter simplemente utilizas el operador de comparación "==" mientras en el caso de una palabra utilizas la función strcmp.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

NOIS

Si quieres que se introduzca una palabra o cadena concreta puedes hacer algo muy sencillo:

Código (cpp) [Seleccionar]


string str;

cout << "Introduzca la clave para continuar: " << endl;
while(str != "clave")
{
     getline(cin, str);
}

NOIS dev7

ductum fusti percusit

Muchas gracias a todos ya lo he arreglado, es que no de la función getchar. ;D