Complément pour mon programe !

lucario200298 Messages postés 56 Date d'inscription   Statut Membre Dernière intervention   -  
lucario200298 Messages postés 56 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai écris un programme qui fonctionne, super, mais je voudrai un action supplémentaire et je ne sais pas comment m'y prendre voici le code :

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

int main()
{
	int heure = 0, minute = 0, seconde = 0; 
	printf ("Cette application sert a eteindre l'ordinateur au bout d'un certain temps\n\nEntrez le nombre d'heures\n");
	scanf ("%d", &heure);
	printf ("Le nombre minutes\n");
	scanf ("%d", &minute);
	printf ("Et enfin, le nombre de secondes\n");
	scanf ("%d", &seconde);
	minute = minute + (heure * 60);
	seconde = seconde + (minute * 60);
	while (seconde > 0)
	{
		printf ("Extinction de l'ordinateur dans %d seconde", seconde);
		seconde--;
		Sleep(1000);
		system ("cls");
	}
	system ("shutdown -p");
	return 0;
}



Ce que je voudrais faire : c'est pouvoir au dernier printf qui se situe dans la boucle afficher heure minute seconde.

Merci de répondre rapidement
A voir également:

3 réponses

ghuysmans99 Messages postés 2496 Date d'inscription   Statut Contributeur Dernière intervention   340
 
Il te suffit d'abord de compter combien de fois (x) tu peux mettre 60*60 dans seconde. Retire 3600x de seconde puis calcule combien de fois (y) tu peux mettre 60 dans seconde. Retire 60y de seconde puis affiche x=heures, y=minutes, seconde.
0
lucario200298 Messages postés 56 Date d'inscription   Statut Membre Dernière intervention   1
 
Excuser moi mais je n'ai rien compris
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Ce que tu veux c'est afficher l'heure du système ?

#include <time.h>

time_t tt = time(NULL);
struct tm *t = localtime(&tt);

int h = t->tm_hour;
int m = t->tm_min;
int s = t->tm_sec;

printf("%d:%d:%d\n", h,m,s)
0
lucario200298 Messages postés 56 Date d'inscription   Statut Membre Dernière intervention   1
 
tout ca je l'insère ou?
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Là où tu en as besoin... vu ce que tu demandes je dirai à la fin, entre ton while et ton appel system
0
lucario200298 Messages postés 56 Date d'inscription   Statut Membre Dernière intervention   1
 
est-ce que c'est ca ?

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#include <time.h>

int main()
{
	int heure = 0, minute = 0, seconde = 0; 
	printf ("Cette application sert a eteindre l'ordinateur au bout d'un certain temps\n\nEntrez le nombre d'heures\n");
	scanf ("%d", &heure);
	printf ("Le nombre minutes\n");
	scanf ("%d", &minute);
	printf ("Et enfin, le nombre de secondes\n");
	scanf ("%d", &seconde);
	minute = minute + (heure * 60);
	seconde = seconde + (minute * 60);
	while (seconde > 0)
	{
                time_t tt = time(NULL);
                struct tm *t = localtime(&tt);
 
                int h = t->tm_hour;
                int m = t->tm_min;
                int s = t->tm_sec;

		printf("%d:%d:%d\n", h,m,s)
		seconde--;
		Sleep(1000);
		system ("cls");
	}
	system ("shutdown -p");
	return 0;
}
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Tout dépend ce que tu veux faire...
Comme ça il affichera l'heure toutes les secondes, je suis pas sûr que c'est ce que tu veuilles !
Moi j'aurais mis ça juste après l'accolade fermante du while, la ligne avant l'appel system
Mais c'est difficile de t'aider exactement, on ne sais pas ce que tu veux faire exactement...
À vrai dire il me parait personnellement inutile de faire un tel affichage, mais c'est ton programme ;-)
Met en commentaire la ligne du shutdown et fais des tests !
0
lucario200298 Messages postés 56 Date d'inscription   Statut Membre Dernière intervention   1
 
tu vois, tu insère le nombre d'heure de minute et de seconde, l'ordinateur convertit tout en seconde et l'ordinateur s'eteint a la fin du compte a rebour, le compte a rebours lui s'affiche a l'ecran mais en seconde, il y a pas un moyen de le remmetre en heure, minutes, seconde ?
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Tu peux faire comme cela :

#include "stdlib.h"
#include "stdio.h"
#include "windows.h"

int main()
{
    char heure, minute, seconde;

    printf ("Cette application sert a eteindre l'ordinateur au bout d'un certain temps.\n\n");
    
    printf("Nombre d'heures : ");
    scanf("%d",&heure);

    printf ("Nombre de minutes : ");
    scanf("%d",&minute);

    printf ("Nombre de secondes : ");
    scanf("%d",&seconde);

    while (true)
    {
        system ("cls");
        printf("Extinction dans %d:%d:%d\n",heure,minute,seconde);
        
        if (seconde==0)
        {
            if (minute==0)
            {
                if (heure==0)
                {
                    //system ("shutdown -p");
                    return 0;
                }
                else
                {
                    heure--;
                    minute+=59;
                }
            }
            else
            {
                minute--;
            }
            
            seconde+=59;
        }
        else
        {
            seconde--;
        }
        
        //Sleep(1000);
    }
}
Remarque : utiliser Sleep(1000) n'assure en aucun cas qu'il y aura très exactement 1 seconde entre chaque itération, je pense qu'il faut repenser ton code en définissant une heure à atteindre, et égrainer le temps qui nous sépare de cette heure.
0
lucario200298 Messages postés 56 Date d'inscription   Statut Membre Dernière intervention   1
 
1>------ Début de la génération : Projet : shutdown, Configuration : Debug Win32 ------
1> main.c
1>c:\users\baptiste parsy\documents\visual studio 2010\projects\shutdown\shutdown\main.c(12): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdio.h(304) : voir la déclaration de 'scanf'
1>c:\users\baptiste parsy\documents\visual studio 2010\projects\shutdown\shutdown\main.c(15): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdio.h(304) : voir la déclaration de 'scanf'
1>c:\users\baptiste parsy\documents\visual studio 2010\projects\shutdown\shutdown\main.c(18): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdio.h(304) : voir la déclaration de 'scanf'
1>c:\users\baptiste parsy\documents\visual studio 2010\projects\shutdown\shutdown\main.c(20): error C2065: 'true' : identificateur non déclaré
========== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========
0
lucario200298 Messages postés 56 Date d'inscription   Statut Membre Dernière intervention   1
 
ca ne marche pas
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Ce genre d'erreur tu devrais apprendre à les corriger toi même Visual Studio te le dit assez clairement pourtant : C2065: 'true' : identificateur non déclaré

Moi j'ai compilé mon code en C++ donc il connait true, mais si tu compiles en C ça plante...
Remplace while(true) par while(1) et ça devrait marcher...
0
lucario200298 Messages postés 56 Date d'inscription   Statut Membre Dernière intervention   1
 
merci
0