Forum Programmation.shell Unix, pipelines

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
-7
1
juil.
2024

Bonsoir;
y a t il quelqu'un qui pourrait m'aider à résoudre cet exercice
The weather.sh utility in the current working directory provides weather forecasts in your area. When called, it outputs a 4-day forecast in the format "day: weather" separated by line breaks.
Write a bash script that outputs the number of days with a "Thunderstorm" forecast (case- sensitive).

  • # facile

    Posté par  (site web personnel) . Évalué à 9 (+7/-0).

    Oui, c'est très facile. Pour commencer il te faut un système d'exploitation. Je te suggère LFS, c'est le mieux pour apprendre : https://www.linuxfromscratch.org/lfs/download.html

    Une fois que tu aura installé LFS tu devrais avoir acquis les connaissances nécessaires pour résoudre le problème.

    Joyeux amusement.

    pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

    • [^] # Re: facile

      Posté par  . Évalué à 1 (+0/-0). Dernière modification le 02 juillet 2024 à 07:19.

      je vous remercie énormément, pour le lFS je le suis pas à pas pour construire ma propre distribution, main ici je vais passer un test dans 2 jours, et j'ai trouvé cet exercice qui est classé comme difficile.
      j'ai réussi à le resoude de 33% (le score à la fin) :

      #!/bin/bash
      
      forecast=$(./weather.sh)
      
      # Compter le nombre de jours avec une prévision de "Thunderstorm"
      thunderstorm_count=$(echo "$forecast" | grep -c "Thunderstorm")
      
      # Afficher le nombre
      
      if [ $thunderstorm_count -eq 0 ]; then
          echo "No days with thunderstorms"
      elif [ $thunderstorm_count -eq 4 ]; then
          echo "Toute la semaine avec des thunderstorms"
      else
          echo "Number of days with Thunderstorm forecast: $thunderstorm_count"
      fi

      mais je ne sais pas pourquoi il n'est pas juste à 100%, ça fait des jours de tentatives de résolution, mais aucune autre idée

      • [^] # Re: facile

        Posté par  . Évalué à 6 (+3/-0).

        le debug du pauvre, affiche le resultat de ton "thunderstorm_count"

        ainsi tu sauras ce qu'il y a dedans, ensuite regarde tes conditions…

        accessoirement fait toi un jeu de test ou tu maitrises l'entrée (ex un fichier ressemblant à la sortie de weather.sh, mais qui t'appartient et que tu peux modifier librement

        ainsi tu testes avec toujours le meme fichier pour etre sur d'avoir la meme entrée, et donc logiquement la meme sortie

  • # Voir aussi

    Posté par  (site web personnel, Mastodon) . Évalué à 5 (+2/-0). Dernière modification le 01 juillet 2024 à 21:47.

    Ceete page du wiki notamment le paragraphe : "Aidez-moi à faire cet exercice, c'est pour hier !".

    « Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.

    • [^] # Re: Voir aussi

      Posté par  . Évalué à 1 (+0/-0).

      merci, mais ici ça fait des jours que je stagne sur cet exercice, peu de gens ont pu résoudre cet exercice et je tente ma chance si kelk un parmi eux passe par là

  • # Consigne

    Posté par  . Évalué à 2 (+0/-0).

    Une idée comme ça… la consigne est :

    outputs the number of days with a "Thunderstorm" forecast

    Et non pas :

    outputs the number of days with a "Thunderstorm" forecast, unless it's 0 or 4.

    • [^] # Re: Consigne

      Posté par  . Évalué à 1 (+0/-0). Dernière modification le 01 juillet 2024 à 23:26.

      merci pour votre réponse mais je n'ai pas compris votre raisonnement
      else
      echo "Number of days with Thunderstorm forecast: $thunderstorm_count"
      traite les autres cas

      • [^] # Re: Consigne

        Posté par  . Évalué à 6 (+4/-0). Dernière modification le 01 juillet 2024 à 23:46.

        C'est bien plus simple : il faut afficher le nombre de fois qu'on trouve Thunderstorm. C'est tout. Rien d'autre. Juste un nombre. Pas des phrases. J'ai pu vérifier en faisant le test est j'ai eu 100% (nananère).

        Pourquoi est-ce important de suivre la consigne ? Parce qu'en programmation, on défini des formats, des interfaces, des types de données, pour pouvoir les traiter et faire des opérations avec sans surprise.

        Imagine que tu fais un truc qui compte les carottes dans ton garde-manger, et qui détermine combien de carottes tu dois acheter pour en avoir 10 :

        carottes_a_acheter = 10 - carottes_dans_le_garde_manger
        

        Si carottes_dans_le_garde_manger vaut aucune au lieu de 0, ben ta soustraction ne va pas fonctionner, ton programme va planter et tu vas crever de faim.

        Donc simplifie ton programme et croque une carotte :).

        • [^] # Re: Consigne

          Posté par  . Évalué à 2 (+1/-0).

          merci énormément pour votre réponse mais j'ai essayé toute la première fois d'afficher seulement la variable $thunderstorm_count, c'est pour cette raison que j'ai fait plusieurs modifications pour résoudre la question à 100%
          il m'affiche que le script ne marche pas en cas
          * The forecast contains no thunderstorms: Wrong answer
          *The forecast contains some thunderstorms: Wrong answer
          alors que j'ai essayé mon script sur plusieurs cas, en cas de 0 ou plusieurs jours de thunderstorm et il fonctionne très bien, mais toujours j'obtiens un score de 33%

          • [^] # Re: Consigne

            Posté par  (site web personnel) . Évalué à 2 (+0/-0). Dernière modification le 02 juillet 2024 à 00:20.

            pourquoi se compliquer la vie ? c'est un one-liner trivial

            il faut simplement sortir le chiffre obtenu… et hop, 100%

            • [^] # Re: Consigne

              Posté par  . Évalué à 1 (+0/-0).

              merci pour vous, enfin j'ai eu 100%

            • [^] # Re: Consigne

              Posté par  . Évalué à 3 (+1/-0).

              Oui, sauf que sur le site de test…

              Ce programme fonctionne :

              #!/bin/bash
              
              ./weather.sh | grep -c Thunderstorm
              

              Et celui-ci ne fonctionne pas, mais fonctionne bien sur ma machine :

              #!/bin/bash
              
              weather="$(./weather.sh)"
              count=$(echo "$weather" | grep -c Thunderstorm)
              echo $count
              

              Du coup je pense que shella a buté sur un bête bug du site de test. Pas cool.

              Bon courage pour la suite !

              • [^] # Re: Consigne

                Posté par  (site web personnel) . Évalué à 4 (+2/-0). Dernière modification le 02 juillet 2024 à 00:45.

                bin faire exécuter le contenu d'une variable c'est toujours casse-gueule à échapper selon que c'est utilisé directement dans le shell en ligne de commande, exécuté dans un script shell ou appelé par un autre script shell ou encore dans le cron… tu passes ton temps à mettre des \ de partout :/

                • [^] # Re: Consigne

                  Posté par  . Évalué à 1 (+0/-0).

                  Encore une fois, merci du fond du cœur.

                  Avec toute ma gratitude

                  • [^] # Re: Consigne

                    Posté par  (site web personnel) . Évalué à 3 (+1/-0).

                    boah, la prochaine fois, indique testdome tout de même et entraîne-toi à citer du code en Markdown comme indiqué sur le wiki aide-édition code — même si la modération est passée par là pour éditer ton commentaire ;-)

                    d'ailleurs, si tu as envie de lister les plateformes sur lesquelles tu t'entraînes, ce sera la bienvenue :p (même si cg< a été capable de le retrouver…) ; tu peux les lister à la fin de ton entrée de forum (que tu peux éditer).

                    • [^] # Re: Consigne

                      Posté par  . Évalué à 1 (+0/-0).

                      je vous remercie pour votre temps et votre empathie

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.