elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  system ("pause");
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: system ("pause");  (Leído 6,510 veces)
ductum fusti percusit

Desconectado Desconectado

Mensajes: 8


Clubbed to death


Ver Perfil
system ("pause");
« en: 29 Marzo 2015, 22:04 pm »

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.


En línea

daryo


Desconectado Desconectado

Mensajes: 1.070



Ver Perfil WWW
Re: system ("pause");
« Respuesta #1 en: 29 Marzo 2015, 22:16 pm »

podrias probar con getchar
http://www.cplusplus.com/reference/cstdio/getchar/


« Última modificación: 29 Marzo 2015, 22:23 pm por daryo » En línea

buenas
ductum fusti percusit

Desconectado Desconectado

Mensajes: 8


Clubbed to death


Ver Perfil
Re: system ("pause");
« Respuesta #2 en: 29 Marzo 2015, 22:37 pm »

Se me olvido decir que era en c no en c++.
En línea

daryo


Desconectado Desconectado

Mensajes: 1.070



Ver Perfil WWW
Re: system ("pause");
« Respuesta #3 en: 29 Marzo 2015, 22:43 pm »

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.
En línea

buenas
mimel

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: system ("pause");
« Respuesta #4 en: 29 Marzo 2015, 22:43 pm »

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:

Código:
getchar();
while (getchar() != '\n' )
;
un programa mas sencillo donde lo ejecuta mejor:
Código:
#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:
Código:
#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!
En línea

mimel
implementador de software libre
Estudiante de Desarrollo de Software
Colombia-Huila-Neiva
sabeeee

Desconectado Desconectado

Mensajes: 155


Ver Perfil
Re: system ("pause");
« Respuesta #5 en: 30 Marzo 2015, 00:52 am »

Sinceramente yo usaría solamente "getchar()" no se necesita mucho mas que eso. en C y  C++.
En línea

"Vengándose, uno iguala a su enemigo; perdonando, uno se muestra superior a él."
Francis Bacon
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: system ("pause");
« Respuesta #6 en: 30 Marzo 2015, 04:42 am »

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?
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
En línea

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

Desconectado Desconectado

Mensajes: 67


Ver Perfil
Re: system ("pause");
« Respuesta #7 en: 30 Marzo 2015, 10:25 am »

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

Código
  1.  
  2. string str;
  3.  
  4. cout << "Introduzca la clave para continuar: " << endl;
  5. while(str != "clave")
  6. {
  7.     getline(cin, str);
  8. }
  9.  
  10.  
En línea

NOIS dev7
ductum fusti percusit

Desconectado Desconectado

Mensajes: 8


Clubbed to death


Ver Perfil
Re: system ("pause");
« Respuesta #8 en: 30 Marzo 2015, 21:20 pm »

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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines