IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

problème de chronomètre


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Femme Profil pro
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Par défaut problème de chronomètre
    Bonjour à tous j'essaie de visualiser un chronomètre à un endroit précis à l'écran tout en me laissant la possibilité d'afficher d'autre chose à l'écran mais le problème que mon programme nécessite l'effacement de l’écran au fur et à mesure en plus il boucle infiniment sur la position du curseur donc je peux pas afficher d'autre chose à l'écran juste après le chronomètre .sachant que c'est primordiale pour moi d'afficher le chrono et le message qui vient après ,est ce que vous pouvez m'aider?

    voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    #include <stdlib.h>                 //system("Pause") - system("cls")
    #include <stdio.h>                  //printf()
    #include <windows.h>                //Sleep()
    void Positionner_Curseur(int x, int y)
    {COORD point;
     point.X = x; point.Y = y;
     SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),point);
    }
     main()
    {int h = 0 , m = 0 , s = 0; 
        Positionner_Curseur(70,2);  
        printf("__________________");
        while (h < 24)
        {     Positionner_Curseur(70,2);
              if (h < 10)
              {   printf("0%i : ",h);         //Affichage avec 0 devant
              }
              else
              {   printf("%i : ",h);          //Sans le 0 si > 10
              }
              if (m < 10)
              {   printf("0%i : ",m);
              }
              else
              {   printf("%i : ",m);
              }
              if (s < 10)
              {   printf("0%i",s);
              }
              else
              {   printf("%i",s);
              }
            s++;                        //Incrémentation des secondes
            Sleep(1000);   
                  //Attente de 1000 mili-secondes
              if (s > 59)
              {   s = 0;
                  m++;
              }
              if (m > 59)
              {   m = 0;
                  h++;
              }
        }
        Positionner_Curseur(70,6); 
        printf("__________________");
    }
    Merci d'avance

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 257
    Par défaut
    Bonjour,

    Fais une boucle qui , toutes les secondes, efface et affiche la totalité de l'écran.
    Tu pourras afficher tout ce que tu veux avec une mise à jour à la seconde.

  3. #3
    Membre habitué
    Femme Profil pro
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Par défaut
    Merci,l'idée est bonne sauf que ce que je veux afficher doit rester à l'écran continuament

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 477
    Par défaut
    Tu peux utiliser GetConsoleScreenBufferInfo() pour obtenir une structure contenant des informations sur ta console dont, en particulier, la position courante du curseur. Tu lis ces informations en entrant dans ta boucle et tu restaures la position originale juste après avoir écrit à l'écran la valeur de ton chronomètre.

    Tu peux également utiliser SetConsoleWindowInfo() qui te permettra de redéfinir une zone de travail plus petite que la zone originale, ce qui te protégera du défilement la ligne qui contient ton horloge.

    Enfin, si ton objectif est de réaliser un chronomètre fonctionnant en tâche de fond tout en te laissant l'usage de ta console à d'autres fins, tu ne peux pas t'en sortir avec un programme ordinaire. Il va falloir lui demander explicitement de passer en arrière plan, et de se réveiller à intervalles fixes. Autrement, essaie de la lancer avec « start /b ».

  5. #5
    Membre émérite
    Avatar de Elijha
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Avril 2003
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2003
    Messages : 314
    Par défaut
    Salut,

    Pour éviter des tests successif pour l'affichage de ton chronomètre, le format de printf te permet de forcer l'affichage sur 2 digits avec le 0 en premier si la valeur en inférieure à 10.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Positionner_Curseur(70,2) ;
    printf("%.2d:%.2d:%.2d", h, m, s) ;
    /* ou */
    printf("%02d:%02d:%02d", h, m, s) ;
    En repositionnant le curseur avant le printf, ce qui a été affiché précédement sera "écrasé" par le nouvel affichage.


    Bonne continuation.

Discussions similaires

  1. Problème dans mon chronomètre
    Par nicosmash dans le forum Langage
    Réponses: 3
    Dernier message: 08/11/2012, 12h37
  2. Chronomètre fait maison - problème de thread
    Par rXpCH dans le forum Général Java
    Réponses: 4
    Dernier message: 24/09/2010, 11h38
  3. [GTK+ C] Chronomètre : problème de structure +jouer un son
    Par acryline dans le forum GTK+ avec C & C++
    Réponses: 16
    Dernier message: 08/04/2008, 11h08
  4. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  5. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo