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

  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 615
    Points
    21 615
    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 615
    Points
    21 615
    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 615
    Points
    21 615
    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
    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
    d'accord j'ai compris maintenant:
    Par exemple, le tableau pourrait être 3, 1, 2, 1, 3, 2 ce qui signifie que l'on a d'abord
    les arrivées des touristes 3, 1 et 2 dans cet ordre, puis le départ des touristes 1, 3 et 2 dans cet ordre.
    Donc dans le restaurant on aura d'abord 3 tout seul, puis 3 avec 1, et ensuite 3 ,1 et 2 en même temps,
    avant de n'avoir plus que 3 et 2 ensemble et enfin 2 tout seul jusqu'à ce qu'il parte.

    Mais comment traduire tout ça en code java?

  8. #8
    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 615
    Points
    21 615
    Par défaut
    Ma foi, tu pourrais commencer par faire des objets pour chaque chose dont parle le problème, et aussi des objets conteneurs pour contenir les trucs qui sont pareils.

    Genre quelque chose qui stocke tous les clients qui ont déjà payé une fois dans la journée. Un truc qui stocke tous les clients qui attendent une place.
    Peut-être un truc qui stocke toutes les places, il faut voir.

    Je dirais qu'il faut faire en code Java, comme en code de n'importe quel autre langage. Et qu'il faut faire en code, peu ou prou comme on ferait en dessinant sur une feuille blanche.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 845
    Points : 22 859
    Points
    22 859
    Billets dans le blog
    51
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Ma foi, tu pourrais commencer par faire des objets pour chaque chose dont parle le problème, et aussi des objets conteneurs pour contenir les trucs qui sont pareils.
    [...]
    Et qu'il faut faire en code, peu ou prou comme on ferait en dessinant sur une feuille blanche.
    Je dirait même plus, on commence en analysant les principes énoncés dans le problème et en posant les base des principes sur une page blanche, puis on dessine un diagramme d’états ou un graphe de flot de controle ou un organigramme. Après on code...
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  10. #10
    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