Creer un journal d'horaire sur une journée

Résolu
sarah! Messages postés 57 Statut Membre -  
sarah! Messages postés 57 Statut Membre -
Bonjour ,
je souhaite pour un programme récupérer des horreur d une journée c'est a dire faire incrémenter les seconde,les minutes et les heurs:

voila mon code j'ai réussi a faire que pour les seconde et les minute mais j'arrive pas a le faire pour les heurs quelqu'un peut m'aider?

mes seconde s'incrémente chaque 5secondes

public class Ddate {
public static void main(String[] args) {

int hour =0;
int minute =0;
int second=0;

for(int k=1;k<24;k++)
{

for(int j=1;j<61;j++)
{
for(int i=0;i<11;i++)
{
System.out.printf(hour+":"+minute+":"+second+"\n");
second=second+5;
}
System.out.printf(hour+":"+minute+":"+second+"\n");
second=0;
minute=j;
}

System.out.printf(hour+":"+minute+":"+second+"\n");
hour=k;
}

}

}


merci

13 réponses

  1. Utilisateur anonyme
     
    Vérifie la syntaxe de Java, je ne connais pas ce langage :

    import java.io.BufferedWriter;
    import java.io.FileNotFoundException;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintWriter;
    
    public class Temperature {
        public static void main(String[] args) throws FileNotFoundException, InterruptedException{
           
        float temperature[] = {15,14,13,13,12,11,11,12,14,16,18,20,21,22,22,22,22,21,20,19,18,17,16,15,15};
        float temper; // température. à quoi servait ce bizarre tableau à 718 éléments ?
        float t1; // température au début d'une heure
        float dt; // variation de température en une seconde
        int sec; // secondes depuis le début d'une heure
           
          for(int hour=0;hour<24;hour++)
           {
            t1=temperature[hour]; // température au début d'une heure
            dt=(temperature[hour+1]-t1)/3600; // variation de température en une seconde
            sec=0;  // secondes depuis le début d'une heure
            
            for(int minute=0;minute<60;minute++)  
             {
              for(int second=0;second<60;second+=5)   
               {            
                temper= t1 + dt*sec;
                System.out.printf("2014"+"-"+"01"+"-"+"01"+" "+hour+":"+minute+":"+ second+"\t"+"%.1f\n",temper);
                sec +=5;
               } // for second
             }  // for minute
           }  // for hour
         }  // main
    } // class Temperature
    


    Comme je te l'ai déjà dit, si la température est la même en début et en fin d'heure, elle est constante pendant toute l'heure.
    1
    1. sarah! Messages postés 57 Statut Membre 3
       
      Merci beaucoup le père je pense que mon problème est résolu j'ai ajouter juste un random pour la seconde depuis une heur qu'est ce que vous en pensez?

      import java.io.BufferedWriter;
      import java.io.FileNotFoundException;
      import java.io.FileWriter;
      import java.io.IOException;
      import java.io.PrintWriter;

      public class exp {
      public static void main(String[] args) throws FileNotFoundException, InterruptedException{

      float temperature[] = {15,14,13,13,12,11,11,12,14,16,18,20,21,22,22,22,22,21,20,19,18,17,16,15,15};
      float temper; //
      float t1; // température au début d'une heure
      float dt; // variation de température en une seconde
      int sec; // secondes depuis le début d'une heure
      int Ran[]={0,1,2,3,4,5,10,15};
      int nbAlea;
      for(int hour=0;hour<24;hour++)
      {
      sec=0; // secondes depuis le début d'une heure
      t1=temperature[hour]; // température au début d'une heure
      dt=(temperature[hour+1]-t1)/3600; // variation de température en une seconde


      for(int minute=0;minute<60;minute++)
      {

      for(int second=0;second<60;second+=5)
      {

      nbAlea=(int)(Math.random()*Ran.length);
      temper= t1 + dt*sec;
      System.out.printf("2014"+"-"+"01"+"-"+"01"+" "+hour+":"+minute+":"+ second+" "+dt+" "+t1+" "+sec+" "+dt+"\t"+"%.1f\n",temper);
      sec +=Ran[nbAlea];
      } // for second
      } // for minute
      } // for hour
      } // main
      } // class Temperature
      0
  2. Utilisateur anonyme
     
    Je ne comprends absolument pas ton histoire d'ajouter un nombre aléatoire pour les secondes. Depusi le début, tu veux une mesure toutes les 5 secondes, ça n'a rien d'aléatoire.
    Et de plus, ta façon de l'appliquer est très mauvaise,
    Elle entraîne un décalage entre l'heure donnée par minute/second et celle donnée par sec.
    Il s'ensuit que la température calculée ne correspond pas à l'instant affiché.
    Ce décalage est cumulatif (sec = c + nombre aléatoire) et peut donc conduire à des discontinuités aux changements d'heure, même si tu as pris soin de choisir tes valeurs pour que leur moyenne soit bien 5 secondes.
    Je ne comprends pas très bien non plus ton choix de valeurs (aussi faible que 0 et aussi haute que 15 ? )
    1
  3. citronpower
     
    Pourquoi ne pas utiliser la classe java.util.Date?
    0
    1. sarah! Messages postés 57 Statut Membre 3
       
      quelle class utilisé dans ce package qui me permettre de résoudre mon problème j'ai cherché et sa me semble qu'il existe pas !
      merci
      0
  4. sarah! Messages postés 57 Statut Membre 3
     
    je développe une petite application ou je dois récupéré une valeur chaque 5secondes de temprérature sur un fichier texte de la manière suivante :

    Date; Time; Temp °C
    01.02.2014; 00:00:00;22.63
    01.02.2014; 00:00:05;22.56
    01.02.2014; 00:00:10;22.63
    ... .... ....

    est toute les 5secondes j'ai une nouvelle valeur dans le fichier
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Utilisateur anonyme
     
    Bonjour

    Tu te compliques beaucoup la vie...
    Je ne connais pas Java, il y a peut-être quelques erreurs, mais j'aurais plutôt écrit ça :

    public class Ddate {
    public static void main(String[] args) {
    int hour =0;
    int minute =0;
    int second=0;

    for(int hour=0;hour<24;hour++)
    {

    for(int minute=0;minute<60;minute++)
    {
    for(int second=0;second<12;second++)
    {
    System.out.printf(hour+":"+minute+":"+ 5*second+"\n");
    }
    }
    }
    }
    }
    0
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      Encore mieux :
       for(int second=0;second<60;second+=5)
      ça évite d'avoir un 12 qui se promène et une multiplication par 5 inutile.

      Remarque : l'utilisation correcte de printf est
      System.out.printf("%d : %d : %d\n", hour,minute,second);
      sinon autant se servir de println...
      0
    2. Utilisateur anonyme
       
      J'avais corrigé l'algorithme de Sarah, pas la syntaxe de Java que je ne connais pas. J'avais pensé aussi au second+=5 comme en C ou en PHP, mais je ne savais pas si on pouvait le faire en Java.
      0
    3. sarah! Messages postés 57 Statut Membre 3
       
      merci beaucoup le père et ça marché parfaitement et même avec *5
      merci beaucoup KX aussi pour la correction
      0
  7. BunoCS Messages postés 436 Date d'inscription   Statut Modérateur Dernière intervention   3 931
     
    Hello,
    Il existe une classe Timer en Java. ça t'évite d'avoir des boucles pour compter le temps passé
    0
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      Je ne crois pas qu'il y ait de notion de temps ici, je n'ai pas vu de Thread.sleep, il s'agit juste d'énumérer les possibilités. Rien de trop sorcier ;)
      0
    2. BunoCS Messages postés 436 Date d'inscription   Statut Modérateur Dernière intervention   3 931
       
      je développe une petite application ou je dois récupéré une valeur chaque 5secondes de temprérature
      C'est cette phrase qui m'a fait penser au timer. J'ai compris de travers ;)
      0
    3. KX Messages postés 19031 Statut Modérateur 3 020
       
      Oups. J'ai pas du aller jusque là. Ce matin j'ai du m'arrêter aux "horreurs" (que tu as changé depuis)

      Mais dans une discussion précédente sarah! expliquait qu'il s'agissait de simuler ces mesures. Son projet a peut-être changé depuis... bref je me suis un peu emmêlé les pinceaux ;-)

      Sinon effectivement les Timer serait bien pour faire ça, mais ce n'est pas vraiment accessible aux débutants.
      0
    4. BunoCS Messages postés 436 Date d'inscription   Statut Modérateur Dernière intervention   3 931
       
      Attendons le retour de sarah! ;)
      0
    5. sarah! Messages postés 57 Statut Membre 3
       
      Bonjour ,effectivement c'est le même projet KX et j'ai réussi a faire simuler les mesures avec le temps récupéré de timer (Thread.sleep) ou le la différence entre deux mesures est la même dans le réel ce qui fait pour simuler une journée je dois attendre 24heurs ,mnt je ne veux pas ça je veux récupéré la simulation directement c'est pour ça je pense a récupéré le journal d'horaire .
      j'espère j'étais un peu clair et merci pour vos propositions
      0
  8. sarah! Messages postés 57 Statut Membre 3
     
    j'ai réussi a le faire :
    import java.io.BufferedWriter;
    import java.io.FileNotFoundException;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintWriter;

    public class Temperature {
    public static void main(String[] args) throws FileNotFoundException, InterruptedException{

    float temperature[] = {15,14,13,13,12,11,11,12,14,16,18,20,21,22,22,22,22,21,20,19,18,17,16,15,15};
    float random[] = new float[718]; //60/5=12 on suppose que chaque 5secondes on a une nouvelle valeur

    for(int j=0;j<=718;j++)
    {
    for(int hour=0;hour<25;hour++)
    {
    for(int minute=0;minute<60;minute++)
    {
    for(int second=0;second<12;second++)
    {
    random [j]= (float)(Math.random() * (temperature[hour]-temperature[hour+1])) + temperature[hour+1];
    System.out.printf("2014"+"-"+"01"+"-"+"01"+" "+hour+":"+minute+":"+ 5*second+"\t"+"%.1f\n",random [j]);

    }
    }

    }

    }
    }

    }

    mais je ne suis pas satisfaite de la résulat ors je veux controler le random
    je m'explique je vous affiche un extrait de résulat la première minute :

    2014-01-01 0:0:0 14,5

    2014-01-01 0:0:5 14,6

    2014-01-01 0:0:10 14,5

    2014-01-01 0:0:15 14,0

    2014-01-01 0:0:20 14,8

    2014-01-01 0:0:25 14,8

    2014-01-01 0:0:30 14,9

    2014-01-01 0:0:35 14,4

    2014-01-01 0:0:40 15,0

    2014-01-01 0:0:45 14,8

    2014-01-01 0:0:50 14,0

    2014-01-01 0:0:55 14,2

    2014-01-01 0:1:0 14,6
    là la température ne ressemble pas a la réalité ,je veux que mon changement ne se fait pas a chaque itération ainsi de manière croissante ou décroissante ;qu'est ce que vous en pensez? merci pour votre suggestion
    0
  9. Utilisateur anonyme
     
    Bonjour

    Si tu veux avoir quelque chose de plus lisse, prends une fonction sinus par exemple.
    Je ne connais pas la syntaxe Java, alors adapte:
    Initialisation :
    Tmoy = 18.0; // température moyenne
    Amplitude =3.0; // nb de degré en plus et en moins de la moyenne
    Hmax = 13*3600: // heure du max de température, en secondes. Ici, la température sera maximale à 13h

    et, dans la boucle :

    Temperature = Tmoy+Amplitude * cos (( hour*3600 + minute*60 + second*5 -Hmax) * 2 * pi / 86400);

    Si c'est trop lisse à ton goût, tu peux ajouter un petit peu de random.

    Au passage, tu aurais mieux fait de suivre le conseil de KX sur la façon de boucler sur les secondes.
    0
    1. sarah! Messages postés 57 Statut Membre 3
       
      Bonjour le père ,
      merci pour la proposition ça l air mieux adapter a mon problème sauf que je veux limiter la température entre deux heur de mesure,
      par exemple :
      je déclare un tableau :
      float temperature[] = {15,14,13,13,12,11,11,12,14,16,18,20,21,22,22,22,22,21,20,19,18,17,16,15};//les 24 mesure dans 24 heurs
      et les mesure entre deux variable ne change pas trop et ne change pas imédiatement,votre solution est mieux adapter sauf qu elle ne respecte pas les prise de mesure entre chaque deux heur .

      ou je peux vous joindre le fichier de résulat pour voir?
      merci bcp
      cordialemnt
      sarah!
      0
  10. Utilisateur anonyme
     
    Qu'entends-tu par "limiter la température entre deux heur de mesure" ?
    Tu veux dire qu'il faut absolument respecter ton tableau : 15° à minuit, 14 degrés à 1h, etc. ?
    Si c'est bien ça, il te faut un tableau de 25 mesures et non pas 24. Et faire une interpolation linéaire par exemple. Est-ce bien ce que tu veux ?
    0
    1. sarah! Messages postés 57 Statut Membre 3
       
      oui exactement ce que je veux ,et je suis d'accord avec le 25valeurs sauf que pour l interpolation ne marche pas je l'ai essayer sauf que les valeurs ne ressemble pas a la réalité .
      0
  11. Utilisateur anonyme
     
    Quelle interpollation avais-tu faite ? Celle qui était àce message-ci ? Ce n'était pas de l'interpollation : c'était une valeur aléatoire compris entre deux bornes.
    Veux-tu une vraie interpolation linéaire, c'est à dire une température qui diminue à vitesse constante de 15 à 14 degrés entre minuit et 1 h ? Si c'est bien ça, attention ; la température va rester constante s'il y a la même température au début et à la fin de l'heure, par exemple 13 degrés entre 2 et 3 h.
    Donne une définition précise de ce que tu appelles des valeurs qui ressemblent à la réalité.
    0
    1. sarah! Messages postés 57 Statut Membre 3
       
      j'ai essayer cette instruction d'interpolation :
      entre deux valeurs V1 et V2
      int V1 = 14;
      int V2 = 15;
      int step = 60/5;
      for (int i = 1; i < step; i++)
      {
      float interpol = (float)(i)/step;
      float val = V1 * (1-interpol) + V2 * (interpol);
      System.err.println("=="+val);
      }
      résulat:


      ==14.9
      ==14.8
      ==14.7
      ==14.6
      ==14.5
      ==14.5
      ==14.4
      ==14.3
      ==14.2
      ==14.1
      ==14.0
      ==14.9
      ==14.8
      ==14.7
      ==14.6
      ==14.5
      ==14.5
      ==14.4
      ==14.3
      ==14.2
      ==14.1
      ==14.0
      ==14.9
      ==14.8
      ==14.7
      ==14.6
      ==14.5
      ==14.5
      ==14.4
      ==14.3
      ==14.2
      ==14.1
      ==14.0
      ce que je souhaite avoir :

      14.0
      14.1
      14.1
      14.1
      15.1
      14.1
      14.2
      ...
      ...
      14.7
      14.7
      14.8
      14.9
      14.9
      14.9
      150.
      15.0
      ...

      le moment de changement de la température se fait aléatoirement de manière progressif ...
      j'espère j'étais assez claire
      et merciii bcp pour ton temps

      sarah!
      0
  12. Utilisateur anonyme
     
    le moment de changement de la température se fait aléatoirement de manière progressif
    Non, ce n'est pas clair du tout, ça ne veut rien dire en français.
    Un moment ne se fait ni aléatoirement, ni de manière progressive : cela n'a aucune signification.

    Sinon, je note que tu as inversé V1 et V2 pour ton interpolation et que tu aurais mieux fait de commencer avec i=0
    0
  13. sarah! Messages postés 57 Statut Membre 3
     
    je vois :(
    et ça ne vous dit rien ce que je veux obtenir :


    ce que je souhaite avoir :

    14.0
    14.1
    14.1
    14.1
    15.1
    14.1
    14.2
    ...
    ...
    14.7
    14.7
    14.8
    14.9
    14.9
    14.9
    150.
    15.0
    ...


    genre logiquement la température ne se change pas brusquement chaque 5secondes voir plus et logiquement lorsque la température se monte elle se progresse petit a petit ,c'est ça ce que je veux dire justement je sais pas comment l'automatisé et je suis désolée de ne pas pu transmette mon idée et pour mon français la langue française n'est pas ma langue natale .

    merciii mille fois et bonne nuit le père
    cordialement
    0
  14. sarah! Messages postés 57 Statut Membre 3
     
    re bonjour ,
    je voulais une prise de mesure chaque 5secondes ,mais pour la valeur de température je la voulais aléatoire controler entre deux heurs .
    quand vous avez mit la varialble sec+=5 j'ai remarqué que la temprérature change chaque 5minute dans mon journal résulat c'est pour ça j'ai pensé a ajouter la valeur aléatoire pour que ma valeur change aléatoirement et non pas chaque 5minutes fixe a chaque fois ,c'est tout.

    ou je peux vous envoyer les deux résultat pour voir le père?
    0