Partage
  • Partager sur Facebook
  • Partager sur Twitter

Que pensez vous de mon mini prog

C'est un espèce de compte a rebour

    18 janvier 2006 à 12:52:42

    Bon ben voila mon code source, Qu'est ce que vous en pensez. Dite moi si c'est bien ou si il y a des choses a amméliorer....
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>

    int main(int argc, char *argv[])
    {
      int tps_total = 0, seconde = 0, minute = 0, heure = 0, jour = 0;
      printf("Indique un temps en seconde : ");
      scanf("%ld", &tps_total);
     
      seconde = tps_total%60;
      minute = floor(tps_total/60);
      if(minute >= 60)
        {
        heure = floor(minute/60);
        minute %=60;
          if(heure >= 24)
          {
            jour = floor(heure/24);
            heure %= 24;
          }
        }
     

      system("CLS");
     
      while(jour >= 0)
        {
        while(heure >= 0)
          {
          while(minute >= 0)
            {
            while(seconde >0)
              {
              seconde --;
              printf("Il reste : %ld jour %ld heures %ld minutes %ld secondes\n",jour, heure, minute, seconde);
              sleep(1000);
             
              system("CLS");
              }
            minute--;
            seconde = 60;
            }
          heure--;
          minute = 60;
          }
        jour--;
        heure = 24;
        }
     
      system("PAUSE");     
      return 0;
    }
    • Partager sur Facebook
    • Partager sur Twitter
      18 janvier 2006 à 13:14:56

      Salut,
      Peux tu nous dire à quoi sert ton programme ?
      • Partager sur Facebook
      • Partager sur Twitter
        18 janvier 2006 à 13:17:29

        c'est un compte a rebour,ca sert pas a grand chose mais c'est pas grave. Je l'ai fait parce que je ne savais pas quoi faire donc j'me suis ammusé bete :)
        • Partager sur Facebook
        • Partager sur Twitter
          18 janvier 2006 à 13:56:07

          ca doit sand doute être moi mais le programme se lance pas. déja, aux la lignes 12, 15, 19, il me dit : "[Warning] converting to `int' from `double' "

          ensuite, c'est pas sleep() ligne 37 mais Sleep().

          ensuite, 'ai pas pu lancé ton prog mais j'ai l'impression qu'il y a une erreur au niveau de
          minute--;
          seconde = 60;


          ca devrait pas être seconde = 59; ? c'est tout bête mais ca compte quand même.
          • Partager sur Facebook
          • Partager sur Twitter
            18 janvier 2006 à 16:11:48

            Moi je n'est pas de prob pendant la compilation, donc je ne sais pas ce qu'il se passe chez toi :)
            • Partager sur Facebook
            • Partager sur Twitter
              18 janvier 2006 à 19:35:58

              J'en avais fait un et il servait à quelque chose : il s'étaignait au bout du temps choisie .



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

              long heure = 0, minute = 0, seconde = 0 , refaire = 1, eteindre = 0, stop = 0;

              int main(int argc, char *argv[])
              {
                 while (refaire == 1){
                 system("CLS");   
                 printf("                 **COMPTE A REBOURD V1.2**\n\n");
                 printf("programme de mise hors tension de l'ordinateur automatique:\n\n");
                 printf("tapez 1 si vous voulez que l'ordinateur s'eteigne automatiquement\n");
                 printf("tapez 2 si vous voulez que l'ordinateur s'eteigne avec 24 sec d'avertissement\n");
                 printf("ou 0 si vous ne le voulez pas ou encore 3 pour quitter le programme.\n");
                 scanf("%ld", &eteindre);
                 if (eteindre == 3)return 0;
                  printf("entrer les heures :");
                  scanf("%ld", &heure);
                  printf("entrer les minutes :");
                  scanf("%ld", &minute);
                  printf("entrer les secondes :");
                  scanf("%ld", &seconde);
                  system("CLS");
                 
              if (seconde == 0){ if (minute != 0) { minute-- ;} seconde = 60 ;}

                while(1)
                {

                 sleep( (int) 1000 );
                 system("CLS");
                 if (seconde == 0 && heure == 0 && minute == 0) break ;

                 if(seconde == 0 && minute != 0)
                 {
                 minute--;
                 seconde = 60;
                 }

                 if(minute == 0 && heure != 0)
                 {
                 heure--;
                 minute = 60;
                 }
                  printf("                 **COMPTE A REBOURD EN COUR**\n\n");
                 printf("%ld heures %ld minutes %ld secondes", heure, minute, seconde);
                 seconde--;
                }
                system("CLS");
                if (eteindre == 1) system("shutdown -s -f -t 0");
                else if (eteindre == 2){ system("shutdown -s ");
                printf("vous avez la possibilite d'annuler la mise hors tension . il suffit de taper 1");
                scanf("%ld", &stop);
                if(stop == 1){ system("shutdown -a"); break ; }
                }
                else {
                 printf("\7Compte a rebourd terminer !\n\n");
                 printf("refaire un compte a rebourd ? (0 pour quitter, 1 pour refaire)\n");
                 scanf("%ld", &refaire);}
                 }
                 printf("Programme créer par antoinexp ;) **COMPTE A REBOURD V1.2**\n");
                   sleep( (int) 5000 );
                 return 0;
              }



              Mais bon, il est pas encore au top car si on tape 1 heure, il va faire 60 minute et 60 seconde . (c'est plustôt 59 minute et 60 seconde) .
              • Partager sur Facebook
              • Partager sur Twitter
                18 janvier 2006 à 19:38:43

                J'en ai fais un aussi sur le forum qui a eu 0message -___________________-"""
                • Partager sur Facebook
                • Partager sur Twitter
                  18 janvier 2006 à 19:55:41

                  Citation : dark-lord

                  Bon ben voila mon code source, Qu'est ce que vous en pensez. Dite moi si c'est bien ou si il y a des choses a amméliorer....

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

                  int main(int argc, char *argv[])
                  {
                    int tps_total = 0, seconde = 0, minute = 0, heure = 0, jour = 0;
                    printf("Indique un temps en seconde : ");
                    scanf("%ld", &tps_total);
                   
                    seconde = tps_total%60;
                    minute = floor(tps_total/60);
                    if(minute >= 60)
                      {
                      heure = floor(minute/60);
                      minute %=60;
                        if(heure >= 24)
                        {
                          jour = floor(heure/24);
                          heure %= 24;
                        }
                      }
                   

                    system("CLS");
                   
                    while(jour >= 0)
                      {
                      while(heure >= 0)
                        {
                        while(minute >= 0)
                          {
                          while(seconde >0)
                            {
                            seconde --;
                            printf("Il reste : %ld jour %ld heures %ld minutes %ld secondes\n",jour, heure, minute, seconde);
                            sleep(1000);
                           
                            system("CLS");
                            }
                          minute--;
                          seconde = 60;
                          }
                        heure--;
                        minute = 60;
                        }
                      jour--;
                      heure = 24;
                      }
                   
                    system("PAUSE");     
                    return 0;
                  }


                  Tu fais un Sleep de 1000ms ok mais ton script va s'executer en 0ms ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    19 janvier 2006 à 6:10:32

                    Bonjour
                    elle sert a quoi exactement cette commande Sleep ?
                    • Partager sur Facebook
                    • Partager sur Twitter
                      19 janvier 2006 à 7:11:35

                      Citation : dark-lord

                      Moi je n'est pas de prob pendant la compilation, donc je ne sais pas ce qu'il se passe chez toi :)


                      Faudrait ptet commencer à apprendre à compiler avec des vraies options qui donnent de vraies erreurs...

                      Puis tu as lu les cours trop vite, ton floor ne sert à rien là.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        19 janvier 2006 à 18:18:54

                        Citation : eiK


                        <snip>

                        Tu fais un Sleep de 1000ms ok mais ton script va s'executer en 0ms ?


                        Pour toi, une version Unix du programme et qui prend en compte l'ajustement du temps dû au programme lui-même (enfin, devrait du moins) :
                        #include <sys/time.h>
                        #include <stdio.h>
                        #include <unistd.h>
                        #include <time.h>


                        #define DELAY_IVAL 1

                        static void
                        diag(const char *errs)
                        {
                                fprintf(stderr, "Error: %s.\n", errs);
                        }

                        static time_t
                        gettime(void)
                        {
                                time_t t;

                                t = time(NULL);
                                if (t == (time_t)-1) {
                                        diag("failed to get time");
                                        return (-1);
                                }

                                return (t);
                        }

                        static int
                        getrealtime(struct timeval *tv)
                        {
                                if (gettimeofday(tv, NULL) != 0) {
                                        diag("failed to get time of day");
                                        return (-1);
                                }

                                return (0);
                        }

                        static void
                        delay(void)
                        {
                                sleep(DELAY_IVAL);
                        }

                        static void
                        usage(void)
                        {
                                printf("%s",
                                        "Countdown\n"
                                        "countdown h:i:s\n");
                        }

                        static int
                        getparms(int argc, char *argv[], int *ph, int *pi, int *ps)
                        {
                                int h, i, s;

                                if (argc < 2) {
                                        usage();
                                        return (-1);
                                }

                                switch (sscanf(argv[1], "%2d:%2d:%2d", &h, &i, &s)) {
                                case 3: break;
                                case 2: s = i, i = h, h = 0; break;
                                case 1: s = h, i = h = 0; break;
                                case 0:
                                        diag("invalid format");
                                        usage();
                                        return (-1);

                                default:
                                        /* NOTREACHED */
                                        usage();
                                        return (-1);
                                }

                                *ph = h, *pi = i, *ps = s;
                                return (0);
                        }

                        int
                        main(int argc, char *argv[])
                        {
                                long d, elaps;
                                int s, i, h;
                                time_t beg, cur;
                                struct timeval real, tv;

                                if (getparms(argc, argv, &h, &i, &s) != 0)
                                        return (0);

                                beg = cur = gettime();
                                if (beg == (time_t)-1)
                                        return (1);

                                if (getrealtime(&real) != 0)
                                        return (1);

                                elaps = 0;
                                d = 0;
                                goto firsttime;
                                for (; h >= 0; --h)
                                        for (i = 59; i >= 0; --i)
                                                for (s = 60; s > 0; s -= (d - elaps), elaps = d) {
                                                        printf("\rRemaining time: %02d:%02d:%02d",
                                                               h, i, s);
                                                        fflush(stdout);

                                                        delay();

                                                        cur = gettime();
                                                        if (cur == (time_t)-1)
                                                                return (1);
                                                        d = difftime(cur, beg);

                                                firsttime: ;
                                                }

                                if (getrealtime(&tv) != 0)
                                        return (1);
                                printf("\rRemaining time: 00:00:00\n"
                                       "Real elapsed time: %lu.%lu\n",
                                       (unsigned long)(tv.tv_sec - real.tv_sec),
                                       (unsigned long)(tv.tv_usec - real.tv_usec));

                                return (0);
                        }


                        • Partager sur Facebook
                        • Partager sur Twitter
                          19 janvier 2006 à 18:51:44

                          Citation : rz0

                          Faudrait ptet commencer à apprendre à compiler avec des vraies options qui donnent de vraies erreurs...


                          Ben moi je ne sait pas plus que ce qui a été dit dans les cours du site

                          Citation : rz0

                          Puis tu as lu les cours trop vite, ton floor ne sert à rien là.

                          ouai je vien de comprendre pourquoi enfin je croi c'est parce que je déclare la variable en int donc obligatoirement ca n'aura pas chifre après la virgule :)
                          • Partager sur Facebook
                          • Partager sur Twitter
                            19 janvier 2006 à 18:59:39

                            C'est vrai : Bah je te conseille de compiler avec ses options là :
                            -Wall -std=gnu99 -pedantic -Wconversion -Wpointer-arith -Wbad-function-cast -Wcast-align

                            Ajoute les aux options de ton compilateur si tu veux voir toutes les erreurs (enfin pas toutes mais une bonne partie). (Pour GCC/MinGW, c'est-à-dire le compilo qui va avec DevC++)
                            • Partager sur Facebook
                            • Partager sur Twitter
                              19 janvier 2006 à 20:31:59

                              Ok merci je vais testé ca après la faut que je me casse le ... pour mon tpe :D Mais faut les mettre ou lse options ??????
                              • Partager sur Facebook
                              • Partager sur Twitter
                                19 janvier 2006 à 20:35:57

                                Aucune idée, dépend de ton IDE, c'est dans les options du projet souvent ; option du compilateur, quelque chose comme ça.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  19 janvier 2006 à 21:11:52

                                  Je suis sous dev c++ v. 4.9.9.2
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    19 janvier 2006 à 21:19:06

                                    Mais quelle horreur! Y a même pas le petit moulin ^^ *part sous les coups de delannoys*
                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    Que pensez vous de mon mini prog

                                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                    • Editeur
                                    • Markdown