Calculer la moyen en heur

Résolu
Potame137 Messages postés 32 Date d'inscription   Statut Membre Dernière intervention   -  
Potame137 Messages postés 32 Date d'inscription   Statut Membre Dernière intervention   -
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention  
 
d'accord je vais essayer merci !
0
Potame137 Messages postés 32 Date d'inscription   Statut Membre Dernière intervention  
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention  
 
Bonjour je n'ai pas compri il faut faire l'inverse dû calcule ?
resulta = 60 / heure + minute ?
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020 > Potame137 Messages postés 32 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020 > Potame137 Messages postés 32 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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