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

Langage Perl Discussion :

[debutant]date


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 75
    Points : 54
    Points
    54
    Par défaut [debutant]date
    Je suis bloqué je vois pas comment raisonné ... je tourne en rond je trouve pas par moi meme quelqu un aurait la solution ? ( si possible dans un code nivo debutant pour que je puisse le comprendre enfin deja si quelqu un pouvez m aiguillé .. deja ca pourra peu etre m aidé en attendan je vais essayé de trouvé ...
    ennoncer:
    il est demander a l utilisateur si il desire d effectuer un nouveau calcul de la date courante si l 'utilisateur ne repond par o / oui / n / non la question est reformulé

    ex
    Saisir le jour de demain :
    1
    Saisir le mois de demain :
    1
    Saisir l'année de demain :
    2006
    Nous somme le : 31/12/2005
    Recommencer (o/oui/n/non ) :
    bbb
    Recommencer (o/oui/n/non ) :
    o
    Saisir le jour de demain :
    2
    ....
    Nous somme le : 1/12/2004
    Recommencer (o/oui/n/non ) :
    bbb
    Recommencer (o/oui/n/non ) :
    o
    Saisir le jour de demain :
    -





    voici le code pour calculé le jour d aujourd hui en fonction de la date de demain que j ai fai qui est bon :

    Saisir le jour de demain :
    1
    Saisir le mois de demain :
    1
    Saisir l'année de demain :
    2006
    Nous somme le : 31/12/2005

    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
    33
     
    print  " Saisir le jour de demain " ;
    $jour = <STDIN> ;
    chomp $jour ;
    print " Saisir le mois de demain " ;
    $mois = <STDIN>;
    print " Saisir l anne de demain " ;
    $annee = <STDIN> ;
    chomp $annee ;
    if ( $jour > 1 ) ### si jour est superieure a 1 pas de changement de mois
     {
      $jour = $jour -1;
      print " Nous sommes le : \n $jour / $mois / $annee " ;
    }
    elsif ( $jour == 1 , $mois == 3 or $mois == 5 or $mois == 7 or $mois == 8 or $mois == 10 or $mois == 12 ) ## mois avec 31 jours
    {
      $jour = 30 ;
      $mois = $mois - 1  ;
      print " Nous sommes le : \n $jour / $mois / $annee " ;
    }
    elsif ( $jour == 1 , $mois == 2 or $mois == 4 or $mois == 6 or $mois == 9 or $mois == 11 ) ### mois avec 30 jours
    {
      $jour = 31 ;
      $mois = $mois - 1  ;
      print " Nous sommes le : \n $jour / $mois / $annee " ;
    }
    elsif ( $jour == 1 and $mois == 1 ) ### premier jour de l annee il faut reculer l anne d un ans et metre 31/12/$annee -1
    {
      $jour = 31 ;
      $mois = 12  ;
      $annee = $annee - 1 ;
      print " Nous sommes le : \n $jour / $mois / $annee " ;
    }

    le code que j ai commencé pour rajouté la fonction recommencé avec reformulation de la question si la reponse differente de :n / non / oui /o ...
    ne rigolé pas trop

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    print "Recommencer ( o / oui / n / non )  " ;
    $deroulement = <STDIN> ;
    chomp $deroulement ;
    while ( $deroulement ne "o" or $deroulement ne "oui" or $deroulement ne "n" or $deroulement ne "non" )
    {
       print "Recommencer ( o / oui / n / non )  " ;
       $deroulement = <STDIN> ;
       chomp $deroulement ;
    }

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    bon, tu n'es pas clair du tout. Que souhaite tu faire concretement?
    Afficher la date courante si l'utilisateur tape sur le clavier "o" ou "oui"????
    si non, on lui redemande de taper!!!!
    As tu des messages d'erreurs???
    Tu devrais changer le titre de ton sujet (date par exemple!!).

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 75
    Points : 54
    Points
    54
    Par défaut
    oui je veu affiché la date courante si l 'utilisateur repond o / oui

    mais si il repond par exemple ui je veu que la question soit redemandé

    j ai pas d message d erreur vu que j arrive pas raisonné comment arrivé a finir ce bout de code

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    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
     
    #!/usr/bin/perl -w
    use strict;
    use Carp;
    my @tab_date =localtime(time); 
    my $jour = $tab_date[3];
    my $mois = ($tab_date[4]+1);
    my $annee =  ($tab_date[5]+1900);
    my $reponse="";
    while ($reponse !~ /^o|oui$/i) {
      print "voulez vous la date?\n";
      $reponse = <STDIN>;
      chomp($reponse);
    }
      print "$jour/$mois/$annee\n";
    si tu veux des explications, hesite pas!!!

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 75
    Points : 54
    Points
    54
    Par défaut
    j ai rien compris :$ mais il n y a pas une solution avec une boucle iteratives ? et mois le but n est pas d affiché la date du jour mais une date J-1 par rapport a la valeur J indiqué par lutilisateur ... en tous cas je vois que je suis loin d avoir tou compris avec le perl ..

  6. #6
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    il existe des modules perl te permettant de manipuler les dates. Quel est concretement le but de ton script.
    Trouver la date J-1 uniquement??

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 75
    Points : 54
    Points
    54
    Par défaut
    oui en utilisant mon code si possible

    J ai honte de demandé une reponse que semble si bete ...

  8. #8
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    tu es sous quel OS?
    installe le module Date::Calc

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 75
    Points : 54
    Points
    54
    Par défaut
    je dois reste en mode basic c des exo pour s entrainé que le prof donne ... faut trouvé une solution avec des expression simple ...


    Windows XP & 2000 pro
    je vais comme meme installé pour voir de quoi tu parle , c des fonction avancé ? ou je peu le trouvé ?

  10. #10
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    bon lance tomber, si c'est pour des exos, pas la peine de se lancer dans les modules, tu seras perdu et c'est pas le but. On va essayer de travailler avec ton programme et ta logique.

    Bon si j'ai bien compris, ton programme demande le jour, le mois et l'année de demain. En fonction des informations recueillies, t'as reussi à calculer la date du jour d'avant, c'est ça????
    Ton seul souci est que le script demande de taper oui ou o à chaque fois que l'utilisateur tape autre chose??? c'est ça???

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 75
    Points : 54
    Points
    54
    Par défaut
    oui mais il y aussi n / non c ca qui complique pour moi
    donc si c oui /o
    fo recalculé la date
    et redemandé une nouvelle fois si il veu recommencer ...ect..a l infini si reponse est oui / n ...
    si non / n
    FIN


    ( jai modifié le premier post il est plus simple .. )

    Une question me trotte c est un langage dur pour commencer d apres toi , il n y a pas d autre langage conseillé pour debuté?

  12. #12
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    #!/usr/bin/perl -w
    #use strict;
    use Carp;
     
    print "Tapez o ou oui ou n ou non\n" ;
    $deroulement = <STDIN> ;
    chomp $deroulement ;
    while ( $deroulement eq "o" or $deroulement eq "oui") {
    	&calcul_date();
    	print "\nTapez o ou oui ou n ou non\n" ;
    	$deroulement = <STDIN> ;
    	chomp $deroulement ;
    }
    if ($deroulement eq "n" or $deroulement eq "non"){
      print "Merci!!!";
      exit;
    }
    sub calcul_date(){
    	print  " Saisir le jour de demain " ;
    	$jour = <STDIN> ;
    	chomp $jour ;
    	print " Saisir le mois de demain " ;
    	$mois = <STDIN>;
    	print " Saisir l anne de demain " ;
    	$annee = <STDIN> ;
    	chomp $annee ;
    	if ( $jour > 1 ) ### si jour est superieure a 1 pas de changement de mois
    	 {
    	  $jour = $jour -1;
    	  print " Nous sommes le : \n $jour / $mois / $annee " ;
    	}
    	elsif ( $jour == 1 , $mois == 3 or $mois == 5 or $mois == 7 or $mois == 8 or $mois == 10 or $mois == 12 ) ## mois avec 31 jours
    	{
    	  $jour = 30 ;
    	  $mois = $mois - 1  ;
    	  print " Nous sommes le : \n $jour / $mois / $annee " ;
    	}
    	elsif ( $jour == 1 , $mois == 2 or $mois == 4 or $mois == 6 or $mois == 9 or $mois == 11 ) ### mois avec 30 jours
    	{
    	  $jour = 31 ;
    	  $mois = $mois - 1  ;
    	  print " Nous sommes le : \n $jour / $mois / $annee " ;
    	}
    	elsif ( $jour == 1 and $mois == 1 ) ### premier jour de l annee il faut reculer l anne d un ans et metre 31/12/$annee -1
    	{
    	  $jour = 31 ;
    	  $mois = 12  ;
    	  $annee = $annee - 1 ;
    	  print " Nous sommes le : \n $jour / $mois / $annee " ;
    	} 
    }
    si tu veux des explications, hesite pas!!
    j'ai utilise une fonction ou j'ai mis ton code qui calcul la date.
    Ensuite, je fais un while et verifie si l'utilisateur tape o ou oui
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    while ( $deroulement eq "o" or $deroulement eq "oui") {
    	&calcul_date();
    	print "\nTapez o ou oui ou n ou non\n" ;
    	$deroulement = <STDIN> ;
    	chomp $deroulement ;
    }
    si c'est le cas, j'appelle la fonction &calcul_date();
    sinon si on tape n ou non, il sort

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 75
    Points : 54
    Points
    54
    Par défaut
    je vais me penché dessus mais c exatement ce que je voulais merci !!! je vais regarde un peu la fonction sub .. qui a l air interessante !!

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 75
    Points : 54
    Points
    54
    Par défaut
    use carp signifie koi ?

  15. #15
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    bon un conseil lis la Faq que j'ai rédigé avec mes collegues. (lien sur ma signature), ensuite tu as les cours de david http://perl.developpez.com/
    TU apprendras facilement perl.

    Oublie pas de mettre le tag resolu!!
    NB: use Carp => Recherche les erreurs de syntaxe dans le programme

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 75
    Points : 54
    Points
    54
    Par défaut
    ce que je voulais ... :
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    #!/usr/bin/perl -w
    use Carp;
     
    &date_courante() ;
    &condition_recommencer () ;
     
    while ( $deroulement eq "o" or $deroulement eq "oui")
    {
       &date_courante();
       &condition_recommencer ();
    }
    if ($deroulement eq "n" or $deroulement eq "non")
    {
       print "FIN Merci!!!";
    }
     
    #### intruction  ####
     
    #### recommencer la question tant que  la reponse n est pas bonne
    sub condition_recommencer ()
    {
    print "\n Recommencer ? " ;
    $deroulement =<STDIN> ;
    chomp $deroulement ;
     
    while ( $deroulement ne "o" && $deroulement ne "oui" && $deroulement ne "n" && $deroulement ne "non")
    { 
          print "\n Recommencer ? " ;
          $deroulement =<STDIN> ;
          chomp $deroulement ;
    }
    }
     
     
    ### calcule la date du jour  J-1 ( J saisi par l utilisateur )
    sub date_courante() 
    {
    print  " Saisir le jour de demain " ;
    $jour = <STDIN> ;
    chomp $jour ;
    print " Saisir le mois de demain " ;
    $mois = <STDIN>;
    chomp $mois ;
    print " Saisir l anne de demain " ;
    $annee = <STDIN> ;
    chomp $annee ;
     
     
    if ( $jour > 1 ) ### si jour est superieure a 1 pas de changement de mois
     {
      $jour = $jour -1;
      print " Nous sommes le : \n $jour / $mois / $annee " ;
    }
    elsif ( $jour == 1 && $mois == 3) ## mois avec 28 jours
    {
      $jour = 28 ;
      $mois = $mois - 1  ;
      print " Nous sommes le : \n $jour / $mois / $annee " ;
    }
    elsif ( $jour == 1 && $mois == 5 or $mois == 7 or $mois == 8 or $mois == 10 or $mois == 12 ) ## mois avec 31 jours
    {
      $jour = 30 ;
      $mois = $mois - 1  ;
      print " Nous sommes le : \n $jour / $mois / $annee " ;
    }
    elsif ( $jour == 1 && $mois == 2 or $mois == 4 or $mois == 6 or $mois == 9 or $mois == 11 ) ### mois avec 30 jours
    {
      $jour = 31 ;
      $mois = $mois - 1  ;
      print " Nous sommes le : \n $jour / $mois / $annee " ;
    }
    elsif ( $jour == 1 && $mois == 1 ) ### premier jour de l annee il faut reculer l anne d un ans et metre 31/12/$annee -1
    {
      $jour = 31 ;
      $mois = 12  ;
      $annee = $annee - 1 ;
      print " Nous sommes le : \n $jour / $mois / $annee " ;
    }
     
    }
    merci de votre aide ! surtt au modo

  17. #17
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    c'est bien que t'ai reussi à faire ce que tu veux!!!
    Essaye de lire la faq, ça t'aidera beaucoup. Apprend à mettre use sctrict;
    ça t'obligera à bien declarer tes variables avec my. ce qui n'est pas le cas pour l'instant. Essaye et tu verras que t'as pleins de messages d'erreurs
    Ensuite, indente ton code, etc.
    courage on est là pour t'aider !!!

    OUBLIE PAS le tag resolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Numero de semaine -> date debut, date fin
    Par fatati dans le forum Oracle
    Réponses: 21
    Dernier message: 17/05/2011, 16h25
  2. Formulaire avec date debut date fin
    Par Merfolk dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 29/08/2006, 15h48
  3. date -> onlick
    Par sd dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/07/2006, 11h02
  4. [debutant] Date du lendemain
    Par hunter69fr2002 dans le forum C
    Réponses: 8
    Dernier message: 04/12/2005, 19h14
  5. [Debutant] [Date] convertion date
    Par BenoitM dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 17/04/2003, 14h55

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