IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

implémenter la méthode computeDayGains(nbSeats,payingGuests,guestMovements)


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Points : 0
    Points
    0
    Par défaut implémenter la méthode computeDayGains(nbSeats,payingGuests,guestMovements)
    Bonjour, j'ai un exercice très bizarre que je n'arrive pas à résoudre,le voici:

    Pour attirer les touristes ,un casino de Las Vegas propose un buffet à volonté
    où chacun paye ce qu'il souhaite payer.

    Sachant que vous connaissez ce que chaque touriste est prêt à payer, on vous
    demande de calculer les gains du restaurant pour la journée:
    • En début de journée , le restaurant est vide.
    • Un touriste arrive,est placé,mange,paye et s'en va.
    • il y'a seulement nbSeats places disponibles.Un touriste peut manger et payer
      seulement s'il peut être placé.
    • Si un touriste arrive au restaurant alors qu'il n'y a plus de places disponibles:
      • Soit il attend son tour jusqu'à ce qu'une place se libère
      • Soit il attend un moment et part avant qu'une place se libère
    • Un touriste peut venir plusieurs fois dans la journée dans ce cas il ne paye au maximum
      qu'une seule fois.


    implémentez la méthode computeDayGains(nbSeats,payingGuests,guestMovements) qui renvoie les gains
    de la journée:
    • Le tableau payingGuests contient ce que chaque touriste est prêt à payer.Par exemple si payingGuests[5] vaut 25,
      cela veut dire que le touriste avec l'identifiant 5 est prêt à payer 25$ pour le buffet.
    • Le tableau guestMovements donne l'ordre des arrivées et des départs de touristes.La première fois que vous
      trouvez un identifiant dans le tableau, il s'agit d'une arrivée.La deuxième fois ,il s'agit d'un départ.Une arrivée est
      toujours suivie d'un départ dans la journée.


    Voici le code qu'il faut compléter:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class Solution {
     
           public static int computeDayGains(int nbSeats,int[] payingGuests,int[] guestMovements){
     
     
     
                   return 0;
     
                      }
     
                  }
    Voici le code que j'ai proposé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    class Solution {
     
           public static int computeDayGains(int nbSeats , int[] payingGuests , int[] guestMovements){
     
                                  int sum=0;    
                             for (int i=0;i< payingGuests.length;i++){
     
                                   sum=sum+payingGuests[i];                                                                  
     
     
     
                      }
                        return (nbSeats*sum);
     
                  }
    guestMovements
    est un array et je ne sais pas comment l'utiliser dans le calcul des gains de la journée,
    Avez - vous une idée ?

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 554
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 554
    Points : 21 613
    Points
    21 613
    Par défaut
    Hello,

    par exemple, pour vérifier que quand quelqu'un arrive, il y a des places libres pour qu'il mange ? (Et donc qu'il paie)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Points : 0
    Points
    0
    Par défaut
    Exemple : tu as 5 places, il y a 10 personnes qui sont prêtes à donner 10$ chacune.
    Si tu arrivais à toutes les faire manger, au maximum tu pourrais obtenir 100$.
    Les gens arrivent et repartent pour libérer leur place de sorte que même si on n'a que
    5 places on peut très bien faire manger 5 personnes puis plus tard les 5 autres, donc
    on peut très bien faire manger les 10 personnes au final.
    le tableau guestMovements permet de dire quand arrivent et repartent les clients,
    ce qui permet de savoir à chaque entrée ou sortie s'il reste de la place et donc s'ils peuvent manger ou non.

    Voilà en gros c'est ça

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 554
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 554
    Points : 21 613
    Points
    21 613
    Par défaut
    Oui j'avais bien compris. C'est toi qui demande.

    Tu es en train de dire que tu viens de comprendre ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Points : 0
    Points
    0
    Par défaut
    Oui j'ai compris maintenant:
    le tableau guestMovements permet de savoir s'il reste de la place ou non, d'accord,
    le nombre de place disponible s'exprime par nbSeats.
    Prenons par exemple un élément du tableau guestMovements,par exemple:
    guestMovements[0],qui correspond à l'indice 0,guestMovement[0] est une arrivée(d'après l'énoncé)
    ensuite guestMovements[1] est un départ,guestMovement[2] est une arrivée (car d'après l'énoncé une arrivée est suivie d'un départ),
    guestMovements[3] est un départ, guestMovements[4] est une arrivée.(on est toujours dans notre exemple avec 5 places disponibles).
    On constate donc que lorsque l'indice est paire ou nul on a une arrivée et quand c'est impair on a un départ.
    Je peux donc introduire une variable int j en disant que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int j=0
    for( j=0;j<guestMovements.length,j++){
    if(guestMovements[j]%2==0 return nbSeats=nbSeats-1)
    Finalement comment j'utilise cette information à propos de guestMovements dans le code final?vu qu'à la fin les 10 personnes mangeront et donneront 10$ chacun.
    Au final j'aurai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    returm (sum+payingGuest[i])
    ,
    il n'y aura pas du tout nbSeats et guestMovements si je veux être cohérent ,pourtant il faut utiliser ces arguments là.
    C'est bizarre, comment dois je faire alors?

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 554
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 554
    Points : 21 613
    Points
    21 613
    Par défaut
    Euh, non. Certes une arrivée est toujours suivie d'un départ (celui de la personne qui est arrivée). Mais pas immédiatement suivie. Juste suivie quelque part après dans le tableau.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Nouveau Candidat au Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2017
    Messages : 1
    Points : 0
    Points
    0
    Par défaut méthode computeDailyGain
    Citation Envoyé par master MI Voir le message
    Bonjour, j'ai un exercice très bizarre que je n'arrive pas à résoudre,le voici:

    Pour attirer les touristes ,un casino de Las Vegas propose un buffet à volonté
    où chacun paye ce qu'il souhaite payer.

    Sachant que vous connaissez ce que chaque touriste est prêt à payer, on vous
    demande de calculer les gains du restaurant pour la journée:
    • En début de journée , le restaurant est vide.
    • Un touriste arrive,est placé,mange,paye et s'en va.
    • il y'a seulement nbSeats places disponibles.Un touriste peut manger et payer
      seulement s'il peut être placé.
    • Si un touriste arrive au restaurant alors qu'il n'y a plus de places disponibles:
      • Soit il attend son tour jusqu'à ce qu'une place se libère
      • Soit il attend un moment et part avant qu'une place se libère
    • Un touriste peut venir plusieurs fois dans la journée dans ce cas il ne paye au maximum
      qu'une seule fois.


    implémentez la méthode computeDayGains(nbSeats,payingGuests,guestMovements) qui renvoie les gains
    de la journée:
    • Le tableau payingGuests contient ce que chaque touriste est prêt à payer.Par exemple si payingGuests[5] vaut 25,
      cela veut dire que le touriste avec l'identifiant 5 est prêt à payer 25$ pour le buffet.
    • Le tableau guestMovements donne l'ordre des arrivées et des départs de touristes.La première fois que vous
      trouvez un identifiant dans le tableau, il s'agit d'une arrivée.La deuxième fois ,il s'agit d'un départ.Une arrivée est
      toujours suivie d'un départ dans la journée.


    Voici le code qu'il faut compléter:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class Solution {
     
           public static int computeDayGains(int nbSeats,int[] payingGuests,int[] guestMovements){
     
     
     
                   return 0;
     
                      }
     
                  }
    Voici le code que j'ai proposé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    class Solution {
     
           public static int computeDayGains(int nbSeats , int[] payingGuests , int[] guestMovements){
     
                                  int sum=0;    
                             for (int i=0;i< payingGuests.length;i++){
     
                                   sum=sum+payingGuests[i];                                                                  
     
     
     
                      }
                        return (nbSeats*sum);
     
                  }
    guestMovements
    est un array et je ne sais pas comment l'utiliser dans le calcul des gains de la journée,
    Avez - vous une idée ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     public int computeDayGains(final int nbSeats, final int[] payingGuest, final int[] guestMovements){
            int sum = 0;
            final HashMap<Integer, Integer> hGuestStatus = new HashMap<>();
            int sDispo = nbSeats;
            for (int i =0; i < guestMovements.length; i++){
                int arr = guestMovements[i];
                if (hGuestStatus.containsKey(arr)) {
                    int value = hGuestStatus.get(arr);
                    if (value %2 == 1) {
                        value ++;
                        sDispo ++;
                        hGuestStatus.put(arr,value);
                    } else {
                        if (sDispo > 0){
                                value ++;
                                sDispo --;
                                hGuestStatus.put(arr,value);
                    }
                    }
                }
                else {
                    if (sDispo > 0) {
                        hGuestStatus.put(arr, 1);
                        sDispo--;
                    }
                }
            }
            for (Map.Entry<Integer, Integer> entry : hGuestStatus.entrySet()) {
                sum+=payingGuest[entry.getKey()];
            }
            return sum;
        }

Discussions similaires

  1. Implémentation des méthodes virtuelles en c++
    Par nosferatu dans le forum Langage
    Réponses: 3
    Dernier message: 24/03/2011, 14h37
  2. Comment implémenter les méthodes pour sauvegarder un fichier ?
    Par ti3um dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 10/04/2009, 16h13
  3. Réponses: 14
    Dernier message: 21/11/2008, 16h29
  4. Réponses: 4
    Dernier message: 09/10/2006, 19h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo