Creer un journal d'horaire sur une journée

Résolu/Fermé
sarah! Messages postés 45 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 16 juin 2014 - Modifié par BunoCS le 10/02/2014 à 11:15
sarah! Messages postés 45 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 16 juin 2014 - 14 févr. 2014 à 15:34
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
A voir également:

13 réponses

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
sarah! Messages postés 45 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 16 juin 2014 3
14 févr. 2014 à 14:36
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
Utilisateur anonyme
14 févr. 2014 à 15:04
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
Pourquoi ne pas utiliser la classe java.util.Date?
0
sarah! Messages postés 45 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 16 juin 2014 3
10 févr. 2014 à 10:08
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
sarah! Messages postés 45 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 16 juin 2014 3
Modifié par sarah! le 10/02/2014 à 10:34
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
10 févr. 2014 à 11:05
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
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
10 févr. 2014 à 18:25
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
Utilisateur anonyme
10 févr. 2014 à 23:05
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
sarah! Messages postés 45 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 16 juin 2014 3
11 févr. 2014 à 13:47
merci beaucoup le père et ça marché parfaitement et même avec *5
merci beaucoup KX aussi pour la correction
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 3 895
10 févr. 2014 à 11:16
Hello,
Il existe une classe Timer en Java. ça t'évite d'avoir des boucles pour compter le temps passé
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
10 févr. 2014 à 18:27
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
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 3 895
10 févr. 2014 à 18:40
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
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
Modifié par KX le 10/02/2014 à 18:51
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
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 3 895
10 févr. 2014 à 21:01
Attendons le retour de sarah! ;)
0
sarah! Messages postés 45 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 16 juin 2014 3
11 févr. 2014 à 11:05
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
sarah! Messages postés 45 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 16 juin 2014 3
Modifié par sarah! le 11/02/2014 à 12:23
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
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
sarah! Messages postés 45 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 16 juin 2014 3
Modifié par sarah! le 12/02/2014 à 13:02
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
Utilisateur anonyme
12 févr. 2014 à 14:35
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
sarah! Messages postés 45 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 16 juin 2014 3
12 févr. 2014 à 17:26
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
Utilisateur anonyme
12 févr. 2014 à 17:37
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
sarah! Messages postés 45 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 16 juin 2014 3
Modifié par sarah! le 12/02/2014 à 20:42
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
Utilisateur anonyme
12 févr. 2014 à 21:06
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
sarah! Messages postés 45 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 16 juin 2014 3
Modifié par sarah! le 13/02/2014 à 00:17
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
sarah! Messages postés 45 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 16 juin 2014 3
14 févr. 2014 à 15:34
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