Calculer la moyen en heur

Résolu/Fermé
Potame137 Messages postés 32 Date d'inscription lundi 23 mai 2016 Statut Membre Dernière intervention 17 août 2020 - Modifié le 4 juin 2018 à 17:13
Potame137 Messages postés 32 Date d'inscription lundi 23 mai 2016 Statut Membre Dernière intervention 17 août 2020 - 6 juin 2018 à 00:15
Bonjour je début en Java et j'aimerais crée un programme qui peux calculer et fair des moyen en heur !
le probléme c'est que si je rentre des valeur comme 5h30 rien ne marche le programme marche bien si je rentre des chiffre comme 10 , 9 , 95684 etc.

package test;

public class Calcule_Bancaire
{public static void main (String[]args)
 {int N;
  int[]tab;
  int i;
  int max;
  int min;
  int compt;
  int total; 

  System.out.print("Combient de relevés voulez vous calculer ? : ");
  N=Lire.i();
  tab=new int[N];

  System.out.println(" ");

  for(i=0;i<N;i++)
   {System.out.print("Donner l'heur numero "+(i+1)+" : ");
    tab[i]=Lire.i();}

  max=tab[0];
  for(i=1;i<N;i++)
   {if(tab[i]>max) max=tab[i];}
  System.out.println("L'heur la plus haute est : "+max);
  
  min=tab[0];
  for(i=1;i>N;i--)
   {if(tab[i]>min) min=tab[i];}
  System.out.println("L'heur la plus base est : "+min);

  compt=0;
  for(i=0;i<N;i++) {if(tab[i]==max) compt=compt+1;}

  System.out.println(" ");
  total =0 ;
  for(i=0;i<N;i++) {total=total+tab[i];}
  System.out.println("La moyenne vaut : "+(total*1.0)/N);
 }
}

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

3 réponses

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
4 juin 2018 à 18:25
Bonjour,

Dans ton programme tu ne saisis que des heures mais il faudrait aussi saisir les minutes.

Le plus simple serait de faire tous tes calculs en minutes :

Exemple :

System.out.print("Donner l'heure numero "+(i+1)+" : ");
int heure = Lire.i(); // 5

System.out.print("Donner la minute numero "+(i+1)+" : ");
int minute = Lire.i(); // 30

tab[i] = 60 * heure + minute; // 330
2
Potame137 Messages postés 32 Date d'inscription lundi 23 mai 2016 Statut Membre Dernière intervention 17 août 2020
4 juin 2018 à 18:28
d'accord je vais essayer merci !
0
Potame137 Messages postés 32 Date d'inscription lundi 23 mai 2016 Statut Membre Dernière intervention 17 août 2020
Modifié le 5 juin 2018 à 14:31
Bonjour mon programme prend en compte les heures et les minute mais je me retrouve avec des resulta comme 11.75 comment faire pour avoir des resulta simple comme 11h50 ?

package test;

public class Calcule_Bancaire
{public static void main (String[]args)
 {int N;
  int[]tab;
  int i;
  int max;
  int min;
  int compt;
  int total; 

  

  System.out.print("Combient de relevés voulez vous calculer ? : ");
  N=Lire.i();
  tab=new int[N];

  System.out.println(" ");

  for(i=0;i<N;i++)
   {System.out.print("Donner l'heure numero "+(i+1)+" : ");
    int heure=Lire.i();
    System.out.print("Donner la minute numero "+(i+1)+" : ");
    int minute = Lire.i(); 
    int resulta = heure + minute / 60;
    tab[i] = resulta; 
    }

  max=tab[0];
  for(i=1;i<N;i++)
   {if(tab[i]>max) max=tab[i];}
  System.out.println("L'heur la plus haute est : "+max);
  
  min=tab[0];
  for(i=1;i>N;i--)
   {if(tab[i]>min) min=tab[i];}
  System.out.println("L'heur la plus base est : "+min);

  compt=0;
  for(i=0;i<N;i++) {if(tab[i]==max) compt=compt+1;}
  System.out.println(" ");
  total =0 ;
  for(i=0;i<N;i++) {total=total+tab[i];}
  System.out.println("La moyenne vaut : "+(total*1.0)/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
5 juin 2018 à 14:37
Il faut faire l'inverse du calcul
resulta = heure + minute / 60;
c'est à dire calculer heure et minute à partir de la valeur qui n'est que en minutes, que tu afficheras ensuite
"La moyenne vaut : " + heure + "h" + minute
par exemple.
0
Potame137 Messages postés 32 Date d'inscription lundi 23 mai 2016 Statut Membre Dernière intervention 17 août 2020
5 juin 2018 à 14:54
Bonjour je n'ai pas compri il faut faire l'inverse dû calcule ?
resulta = 60 / heure + minute ?
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015 > Potame137 Messages postés 32 Date d'inscription lundi 23 mai 2016 Statut Membre Dernière intervention 17 août 2020
5 juin 2018 à 15:37
Oui, tu fais un changement d'unités, ça doit se faire dans les deux sens.

Au départ tu avais des heures et des minutes (ex: 1h30) et tu fais tes calculs tout en minutes (ex: 90 mn).
Une fois que tu as ton résultat (ex: 710 mn) tu dois faire la conversion à l'envers pour l'affichage (ex: 11h50).
0
Potame137 Messages postés 32 Date d'inscription lundi 23 mai 2016 Statut Membre Dernière intervention 17 août 2020
Modifié le 5 juin 2018 à 15:54
Apret modification je me retrouve avec des resulta comme :

Combient de relevés voulez vous calculer ? : 4

Donner l'heure numero 1 : 10
Donner la minute numero 1 : 30
Donner l'heure numero 2 : 11
Donner la minute numero 2 : 15
Donner l'heure numero 3 : 12
Donner la minute numero 3 : 35
Donner l'heure numero 4 : 16
Donner la minute numero 4 : 20
L'heur la plus haute est : 40
L'heur la plus base est : 36

La moyenne vaut : 29.75

je ne trouve pas comment prendre en compte les minute (60) dans le resulta cela viendrais t'il du faite que j utilise un tableau a une dimension ?

public class Calcule_Bancaire
{public static void main (String[]args)
{int N;
int[]tab;
int i;
int max;
int min;
int compt;
int total;



<code> System.out.print("Combient de relevés voulez vous calculer ? : ");
N=Lire.i();
tab=new int[N];

System.out.println(" ");

for(i=0;i<N;i++)
{System.out.print("Donner l'heure numero "+(i+1)+" : ");
int heure=Lire.i();
System.out.print("Donner la minute numero "+(i+1)+" : ");
int minute = Lire.i();
int resulta = 60 / heure + minute ;
tab[i] = resulta;
}

max=tab[0];
for(i=1;i<N;i++)
{if(tab[i]>max) max=tab[i];}
System.out.println("L'heur la plus haute est : "+max );

min=tab[0];
for(i=1;i>N;i--)
{if(tab[i]>min) min=tab[i];}
System.out.println("L'heur la plus base est : "+min);

compt=0;
for(i=0;i<N;i++) {if(tab[i]==max) compt=compt+1;}

System.out.println(" ");
total =0 ;
for(i=0;i<N;i++) {total=total+tab[i];}
System.out.println("La moyenne vaut : " +(total*1.0)/N);
}
}
</code>
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015 > Potame137 Messages postés 32 Date d'inscription lundi 23 mai 2016 Statut Membre Dernière intervention 17 août 2020
5 juin 2018 à 16:03
int resulta = 60 / heure + minute ;
c'est faux, je n'avais pas compris où tu le mettais.
Si tu comptes en minutes, il faut faire une multiplication
int resulta = 60 * heure + minute ;
et tous

Le calcul qu'il faut inverser c'est entre tes résultats en minutes et tes affichage en heures, mais le tableau est hors de cause.
0
Potame137 Messages postés 32 Date d'inscription lundi 23 mai 2016 Statut Membre Dernière intervention 17 août 2020
Modifié le 6 juin 2018 à 00:25
je pense avoir trouver, merci je penser pas que saiter un calculer aussi simple..! j ai chercher compliquer alors que saiter aussi simple merci !

package test;


public class Calcule_Bancaire
{public static void main (String[]args)
{int N;
int[]tab;
int i;
int max;
int min;
int compt;
int total;




{


System.out.print("Combient de relevés voulez vous calculer ? : ");
N=Lire.i();
tab=new int[N];

System.out.println(" ");

for(i=0;i<N;i++)
{System.out.print("Donner l'heure numero "+(i+1)+" : ");
int heure=Lire.i();
System.out.print("Donner la minute numero "+(i+1)+" : ");
int minute = Lire.i();
int resulta = 60 * heure + minute ;
tab[i] = resulta;
}

System.out.println(" ");

max=tab[0];
for(i=1;i<N;i++)
{if(tab[i]>max) max=tab[i];}
System.out.println("L'heur la plus haute est : "+max /60 );

min=tab[0];
for(i=1;i>N;i--)
{if(tab[i]>min) min=tab[i];}
System.out.println("L'heur la plus base est : "+min / 60);

compt=0;
for(i=0;i<N;i++) {if(tab[i]==max) compt=compt+1;}

System.out.println(" ");
total =0 ;
for(i=0;i<N;i++) {total=total+tab[i];}
System.out.println("La moyenne vaut : " +total/N);




int heuretotal = total/60 / N;
int minutetotal = total%60;
System.out.println("les moyenne d'affluence est de : "+heuretotal+ "h"+ minutetotal / N);

System.out.print("Voulez vous faire d'autre relevez ?O/N");
}
System.out.print("Fin programme");
}

}


Combient de relevés voulez vous calculer ? : 4

Donner l'heure numero 1 : 8
Donner la minute numero 1 : 30
Donner l'heure numero 2 : 10
Donner la minute numero 2 : 15
Donner l'heure numero 3 : 12
Donner la minute numero 3 : 10
Donner l'heure numero 4 : 16
Donner la minute numero 4 : 45

L'heur la plus haute est : 16
L'heur la plus base est : 8

La moyenne vaut : 715
les moyenne d'affluence est de : 11h10
0