Calculer la moyen en heur

[Résolu/Fermé]
Signaler
Messages postés
32
Date d'inscription
lundi 23 mai 2016
Statut
Membre
Dernière intervention
17 août 2020
-
Messages postés
32
Date d'inscription
lundi 23 mai 2016
Statut
Membre
Dernière intervention
17 août 2020
-
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

Messages postés
16408
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
21 octobre 2021
2 900
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Messages postés
32
Date d'inscription
lundi 23 mai 2016
Statut
Membre
Dernière intervention
17 août 2020

d'accord je vais essayer merci !
Messages postés
32
Date d'inscription
lundi 23 mai 2016
Statut
Membre
Dernière intervention
17 août 2020

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);
 }
}
Messages postés
16408
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
21 octobre 2021
2 900 >
Messages postés
32
Date d'inscription
lundi 23 mai 2016
Statut
Membre
Dernière intervention
17 août 2020

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.
Messages postés
32
Date d'inscription
lundi 23 mai 2016
Statut
Membre
Dernière intervention
17 août 2020

Je suis totalement perdue ! jarive a avoir des resulta comme 990 mais apret division je ne suis toujour pas bon !

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 : 14
Donner la minute numero 3 : 20
Donner l'heure numero 4 : 16
Donner la minute numero 4 : 10

L'heur la plus haute est : 970
L'heur la plus base est : 510

La moyenne vaut : 738.75
la moyenne vaut : 49h
Messages postés
16408
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
21 octobre 2021
2 900
Pourtant les résultats sont bons.

Exemple : "L'heur la plus haute est : 970", c'est correct, mais c'est 970 mn, puisque tu calcule en minutes.
Il faut que tu divises par 60 pour obtenir le temps en heure, 970 divisé par 60, ça donne 16 il reste 10, donc 16h10...
Messages postés
32
Date d'inscription
lundi 23 mai 2016
Statut
Membre
Dernière intervention
17 août 2020

Oui j'ai comprie ça mais comment tu fait avec 710 ? tu trouve 11,83 donc 11h83 !
Messages postés
16408
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
21 octobre 2021
2 900 >
Messages postés
32
Date d'inscription
lundi 23 mai 2016
Statut
Membre
Dernière intervention
17 août 2020

Tu travailles sur des nombres entiers, donc il faut faire des divisions avec des entiers, comme à l'école primaire.

"710 divisé par 60 égal à 11 il reste 50" → 710 mn = 11h50
710 │ 60 
    ├────
 50 │ 11 
    │    
Messages postés
32
Date d'inscription
lundi 23 mai 2016
Statut
Membre
Dernière intervention
17 août 2020

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