Comment faire une pause lors du lancement d'un programme??

Comment faire une pause lors du lancement d'un programme?? - C++ - Programmation

Marsh Posté le 13-08-2007 à 12:19:13    

Bonjour,
 
Je cherche à ce que l'on puisse interrompre le déroulement du programme en appuyant sur une touche. La fonction system("pause" ) ne convient pas étant donné que le programme s'arrête de toute façon une fois...  Là, le but pour moi et de stopper le programme sur demande... Est-ce que qqun aurait une idée??
 
Merci bcp d'avance...

Reply

Marsh Posté le 13-08-2007 à 12:19:13   

Reply

Marsh Posté le 13-08-2007 à 12:20:00    

une recherche sur le forum ?
le sujet a déjà été abordé.


---------------
Töp of the plöp
Reply

Marsh Posté le 13-08-2007 à 12:30:32    

je fais toujours une recherche :)  mais là j'ai touvé deux choses: system("pause" ) qui ne va pas dans mon cas, et mettre un scanf, mais cela n'a aucun effet...

Reply

Marsh Posté le 13-08-2007 à 12:32:11    

C'est quoi le problème avec le scanf ?

Reply

Marsh Posté le 13-08-2007 à 12:35:33    

J'ai fait un programme de test pour trouver la bonne fonction. dans le programme ci-dessous, le but serait que le programme fasse une pause dès que l'utilisateur appuie sur un chiffre quelconque. mais cela n'a aucun effet...
 
int main()
{
 int x=1;
 for (int i=1;i<=99999;i++)
  {
   int scanf (x);
   if (x==1)
   {
    cout<<i<<endl;
   }
   else
   {
    _getch();
    x=1;
   }
  }
}

Reply

Marsh Posté le 13-08-2007 à 13:00:51    

il te faudrait plus un do/while, et avec un stream, pour etre plus dans l'esprit c++.


---------------
Töp of the plöp
Reply

Marsh Posté le 13-08-2007 à 13:06:30    

Merci de ton aide, mais je débute, c'est quoi exactement un stream??

Reply

Marsh Posté le 13-08-2007 à 13:24:28    

Reply

Marsh Posté le 13-08-2007 à 13:27:05    

Tu veux stopper l'exécution du programme ou juste faire une pause dans cette exécution ?

Reply

Marsh Posté le 13-08-2007 à 13:51:06    

antac a écrit :

Tu veux stopper l'exécution du programme ou juste faire une pause dans cette exécution ?


 
Juste faire une pause...

Reply

Marsh Posté le 13-08-2007 à 13:51:06   

Reply

Marsh Posté le 13-08-2007 à 13:52:06    

sleep() ?

Reply

Marsh Posté le 13-08-2007 à 14:17:18    

un debugger ...
 
si t'es sous un vrai OS, tu peux envoyer un SIGSTOP.
 
sinon c'est quoi l'intérêt ?

Reply

Marsh Posté le 13-08-2007 à 17:38:30    

sienda a écrit :


int main()
{
 int x=1;
 for (int i=1;i<=99999;i++)
  {
   int scanf (x);
   if (x==1)
   {
    cout<<i<<endl;
   }
   else
   {
    _getch();
    x=1;
   }
  }
}


 
Peut etre pas tu as ecris n'importenawak.

Reply

Marsh Posté le 14-08-2007 à 08:09:24    

Un sleep ça fait une pause que l'on ne peut pas régler, et le but est de faire une application où défilent un grand nombre d'informations et l'utilisateur doit pouvoir faire une pause quand il en a envie...

Reply

Marsh Posté le 14-08-2007 à 08:39:20    

| less

Reply

Marsh Posté le 14-08-2007 à 11:53:19    

Il te faut programmer différemment. En vérifiant l'appui d'une touche au sein de la boucle principale ça marche pas bien, la détection est variable.
J'ai eu des résultats corrects en utilisant VS C++ et le modèle de programmation événementielle proposée. En utilisant une boucle qui traite  les signaux qui arrivent à la fenêtre windows ça marche aussi impec.

Reply

Marsh Posté le 27-08-2007 à 18:47:28    

Salut !
 
Je soumet la fonction suivante (j'ai copié sur inkey$ de certains Basic(s))
 
char Inkey()
{
    if(kbhit())
        return getch();
}
 
Il faut  la ligne  
#include <conio.h>
je crois !
 
La fonction permet de saisir un caractère au vol.

Reply

Marsh Posté le 27-08-2007 à 20:01:17    

C'est spécifique à Borland ça je crois.

Reply

Marsh Posté le 27-08-2007 à 23:24:38    

Citation :

int main()
{
 int x=1;
 for (int i=1;i<=99999;i++)
  {
   int scanf (x);
   if (x==1)
   {
    cout<<i<<endl;
   }
   else
   {
    _getch();
    x=1;
   }
  }
}


....
 
 

Citation :

int main()
{
   long i = 0;
while(0){
   cin>>i;
   if (i != 0)
   {
    cout<<i<<endl;
    return 0;
   }
 
 
//traitement
}
return 0;
}


 
pause toute bête en attendant que l'utilisateur utilise une touche.

Message cité 1 fois
Message édité par Coladin le 27-08-2007 à 23:27:26
Reply

Marsh Posté le 28-08-2007 à 13:30:14    


 
c'est tout bonnement ignoble
 
qui plus est, il y a déjà de bonnes pistes où partir :
dans le pire des cas, s'il est pressé, il pourra faire un

Code :
  1. if(kbhit()) System("pause" );

bien placé dans sa boucle de traitement / affichage ou chercher avec les infos données plus haut pour avoir une solution plus élégante et portable s'il en a besoin

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed