Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de programme débutant en C

    12 octobre 2021 à 11:08:54

    #include <stdio.h>
    #include <stdlib.h>
    
    double time_to_sec(double x, double y, double z) ; 
    
    int main(void) {
      double h, m, s;
      printf("entrez une valeur entiere pour h m s: ");
      scanf(" %lf':'%lf':'%lf ", &h, &m, &s); 
    
      
      double secondes = time_to_sec(h, m, s);
      printf("La valeur en secondes pour %lf heures %lf minutes %lf secondes est %lf secondes \n", h, m, s, secondes);
      return EXIT_SUCCESS;
    }
    
    double time_to_sec(double x, double y, double z){
      double resultat ;
      resultat = x * 3600 + y * 60 + z ;
      
      return resultat;
    }
     
    
     

    Bonjour , j'ai un problème avec mon programme , il s'agit de demander à l'utilisateur d'écrire une heure minutes secondes sous la forme 

    12:05:42 par exemple avec les : , mais quand j'exécute mon programme , il ne prend en compte que les heures ( j'ai fais une fonction time to sec car c'est ce que l'on me demandait dans l'énoncé , j'ai bine conscience que j'aurais pu le faire sans ) et ne vous inquiétez pas je compte mettre que les heures ne peuvent pas dépasser 24 et les minutes et secondes 60 , merci pour l'aide d'avance , je début en C donc c'est un peu compliqué 

    • Partager sur Facebook
    • Partager sur Twitter
      12 octobre 2021 à 11:36:27

      Il faut revoir l'utilisation de scanf ! Que viennent faire ces apostrophes dedans ?

      Pourquoi utiliser des double pour heure minute seconde ?

      -
      Edité par rouIoude 12 octobre 2021 à 11:37:45

      • Partager sur Facebook
      • Partager sur Twitter
      ...
        12 octobre 2021 à 12:39:40

        J'ai bien enlevé les apostrophes , et mis des int partout , mais comment je pourrais me débrouiller pour que le scan f demande à l'utilisateur d'entrer une heure sous la forme 12:39:54 ?
        #include <stdio.h>
        #include <stdlib.h>
        
        int time_to_sec(int x, int y, int z) ; 
        
        int main(void) {
          int h, m, s;
          printf("entrez une valeur entiere pour h m s: ");
          scanf(" %d%d%d ", &h, &m, &s); 
        
          
          int secondes = time_to_sec(h, m, s);
          printf("La valeur en secondes pour %d heures %d minutes %d secondes est %d secondes \n", h, m, s, secondes);
          return EXIT_SUCCESS;
        }
        
        int time_to_sec(int x, int y, int z){
          int resultat ;
          resultat = x * 3600 + y * 60 + z ;
          
          return resultat;
        }
         
        
        Voila ce que mon programme donne maintenant mais du coup il n'y a aucun deux points

        -
        Edité par TheoVavasseur1 12 octobre 2021 à 12:41:28

        • Partager sur Facebook
        • Partager sur Twitter
          12 octobre 2021 à 13:16:12

          Il fallait laisser les deux point : 

            scanf(" %d:%d:%d", &h, &m, &s);

          Mais ça fonctionne uniquement si l'utilisateur ne fait pas d'erreur de saisie, sinon ça risque de faire un peu n'importe quoi.

          Il vaudrait mieux saisir une chaîne de caractère et faire un traitement sur la chaîne pour en extraire les données.

          • Partager sur Facebook
          • Partager sur Twitter
          ...
            12 octobre 2021 à 13:57:14

            L'inconvénient de scanf() c'est que la fonction attend une chaîne sous un format précis. Il vaut mieux faire comme le dit Rouloude et éventuellement utiliser fgets()
            • Partager sur Facebook
            • Partager sur Twitter

            Problème de programme débutant en C

            × 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