Classement d'une course

Classement d'une course - Java - Programmation

Marsh Posté le 26-12-2013 à 12:12:01    

Bonjour à tous et Joyeux Noel !! :)
Excusez moi de vous déranger mais j'ai besoin d'aide.
Je suis en terminale en spécialisation Informatique et Science du Numérique. J'ai un exercice à faire sur Javascool, voici le sujet :
Ecrire une procédure qui affiche le classement d'une course. Cette procédure aura comme argument un entier qui donne le nombre de candidats, un tableau String donnant le nom des candidats, et un tableau de double donnant le temps en heures des candidats.
 
J'ai commencé par faire ça:  
 
void affiche_classement_course(String nombre_candidats, String nom_candidats, double temps_h){
 println("Il y a " +nombre_candidats+ " candidats."+" Leurs noms sont" +nom_candidats);
         println("Le classement est:" );
}
void main() {
 println ("Combien de candidats participent à la course ?" );
 String nombre = readString();
 println("Quels sont les noms des candidats?" );
 String nom= readString();
 println("Quel temps les candidats ont mis ?" );
 double temps=readInteger();
 affiche_classement_course(nombre, nom, temps);
}
 
Cependant il manque beaucoup de choses.  :(  
J'aimerai savoir comment faire pour rentrer plusieurs noms ? Par exemple, je rentre nombre=2, donc j'aimerai pouvoir rentrer 2 noms et non qu'un seul.
 
Merci d'avance ! :)

Reply

Marsh Posté le 26-12-2013 à 12:12:01   

Reply

Marsh Posté le 26-12-2013 à 20:28:07    

Effectivement, il y a beaucoup a faire. J'vais pas te donner du tout cuit mais il faut bien commencer quelque part, donc deja commencons par ca:

void affiche_classement_course(String nombre_candidats, String nom_candidats, double temps_h){
 println("Il y a " +nombre_candidats+ " candidats."+" Leurs noms sont" +nom_candidats);
         println("Le classement est:" );
}

Tu ne respectes pas l'enonce, vu qu'il parle de passer un nombre et deux tableaux a la fonction. Pour respecter l'enonce, la declaration des parametres devrait etre:

void affiche_classement_course(int nombre_candidats, String[] nom_candidats, double[] temps_h){

On va supposer que les parametres passes sont coherents: la taille des deux tableaux correspond au nombre de candidats (ca sera a toi de t'en assurer dans ta fonction main).
Evidemment, ton probleme immediat devient que tu ne peux plus utiliser ton println tel quel vu que nom_candidats est maintenant un tableau. Tu vas donc devoir passer par une boucle, ce qui n'est pas un probleme puisque tu connais le nombre de candidats. L'algo va donc etre du genre:


println("Il y a "+nombre_candidats+" candidats." );
for (int i=0; i<nombre_candidats; i++) {
  println("Nom: "+nom_candidats[i]+" Temps: "+temps_h[i]);
}

Cet algo se contente d'afficher - a toi d'y ajouter le triage des temps (et des noms en meme temps pour etre sur que les infos des deux tableaux continuent de correspondre) avant d'afficher. Et aussi de "transformer" les doubles de temps_h[] pour en faire quelque chose de visuellement parlant quand ils sont affiches (ex: "1:20:00" plutot que "1.333333333" - a toi de definir ton format d'affichage).
 
Maintenant, quelques pistes pour ton main():

void main() {
 println ("Combien de candidats participent à la course ?" );
 String nombre = readString();
 // Il faut verifier que l'utilisateur a bien rentre un entier positif et superieur a 1, et lui faire re-rentrer si ce n'est le cas, jusqu'a avoir un entier positif.
 // C'est pas seulement pour faire joli: sans un entier positif, le reste de ton algo va planter.
 // Pour rentrer les noms et temps des candidats, tu peux te baser sur le nombre de candidats, et faire une boucle pour la saisie des candidats.
 // Du coup il te faut avoir tes tableaux de declares avant la boucle
 String[] nom = new String[nombre];
 double[] temps = new double[nombre];
 // maintenant la boucle: for(int i=0; i<nombre; i++) {
   println("Quels sont les noms des candidats?" );
   String nom[i]= readString();
   println("Quel temps les candidats ont mis ?" );
   // vas-tu vraiment demander de rentrer un double (non "parlant" ) ou plutot une String ayant un certain format (ex: "1:10:57" ) que tu vas ensuite transformer en double?
   double temps[i]=readInteger();
 // } (fin de la boucle d'entree des candidats)
 affiche_classement_course(nombre, nom, temps);
}

Ca devrait deja t'aider a avancer pas mal.


---------------
C'était vraiment très intéressant.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed