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 :

Problème sur la table de hashage


Sujet :

Langage Perl

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Services de proximité

    Informations forums :
    Inscription : Septembre 2014
    Messages : 19
    Points : 5
    Points
    5
    Par défaut Problème sur la table de hashage
    Bonjour,

    J'ai des difficultés pour exécuter les questions 4 5 et 6. Merci de bien vouloir m'aiguiller.


    #Construire un programme proposant ces fonctionnalités :

    #* Au chargement, on a au moins 4 abonnés dont un à 0 DVD et un à undef.
    #* On boucle sur un menu proposant :
    #1. afficher la DVDthéque
    #2. ajouter un abonné
    #3. supprimer un abonné
    #4. emprunt d'un ou plusieurs DVD
    #5. retour d'un ou plusieurs DVD
    #6. quitter

    #On aidera l'utilisateur à tout moment du mieux qu'on peut, exemples (non exhaustifs) :
    #* 2 : on affiche la liste des abonnés pour lui montrer ceux qui existent déjà. On vérifie que le nouvel entrant n'existe pas sinon, message.
    #* 3 : on affiche la liste des abonnés avec des numéros pour qu'il puisse indiquer rapidement celui qu'il veut supprimer. On boucle sur une saisie blindée sur ces numéros-là.
    #* 4 : la liste des abonnés est affichée comme ci-dessus.
    #* 5 : idem ci-dessus et on vérifie qu'un abonné ne peut pas rendre plus de DVD qu'il n'en a.


    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    #!/usr/bin/perl 
     
    # La liste des emprunteurs est donnée par une table de hachage %abonnes 
    # Clé : indentifiant = prénom pour simplifier 
    # Valeur : nb de DVD empruntés 
    # Création de la table : 
     
    $abonnes{"Guillaume"} = 3; 
    $abonnes{"Maxime"} = 15; 
    $abonnes{"Anne"} = 0; # abonné qui a déjà emprunté mais aucun emprunt en cours 
    $abonnes{"Michel"} = undef; 
     
    # Affichage 
    print("\n\nAffichage de la DVDthèque"); 
    while (($prenom,$nbDVD) = each %abonnes) { 
    print "\n$prenom est abonné"; 
    # si le nb de DVD n'est pas undef 
    if (defined($nbDVD)) { 
    print("\n\tnb de DVD empruntés : $nbDVD"); 
    } else { 
    print("\n\tIl n'a jamais emprunté de DVD"); 
    } 
    } 
     
    # Ajout d'un nouvel abonné sans emprunt 
    print("\n\nAjout d'un nouvel abonné sans emprunt"); 
    print("\nQui souhaitez-vous ajouter ? "); 
    $newAbonne =<STDIN>; 
    chomp($newAbonne); # suppression du saut de ligne 
    $abonnes{"$newAbonne"} = undef; # abonné sans emprunt 
     
    # Affichage 
    print("\n\nAffichage de la DVDthèque"); 
    while (($prenom,$nbDVD) = each %abonnes) { 
    print("\n$prenom est abonné"); 
    # si le nb de DVD n'est pas undef 
    if (defined($nbDVD)) { 
    print("\n\tnb de DVD empruntés : $nbDVD"); 
    } else { 
    print("\n\tIl n'a jamais emprunté de DVD"); 
    } 
    } 
     
    # Révocation d'un abonné : delete 
    print("\n\nQuel User souhaitez vous supprimer?"); 
    $user= <>; 
    chomp($user); 
    delete ($abonnes {$user}) ; 
     
    # Affichage 
    print("\n\nAffichage de la DVDthèque"); 
    while (($prenom,$nbDVD) = each %abonnes) { 
    print("\n$prenom est abonné"); 
    # si le nb de DVD n'est pas undef 
    if (defined($nbDVD)) { 
    print("\n\tnb de DVD empruntés : $nbDVD"); 
    } else { 
    print("\n\tIl n'a jamais emprunté de DVD"); 
    } 
    } 
     
    # Emprunt d'un ou plusieurs DVD 
    print("\n\nCombien de DVD voulez vous emprunter?"); 
    $maxDVD = -1; # le max de DVD empruntés 
    while (($prenom,$nbDVD) = each %abonnes) { 
    if ($nbDVD > $maxDVD) { 
    $DVD = $nbDVD; 
    $Emprunteur = $prenom; 
    } 
    } 
    print("\nIl a emprunté $DVD DVD"); 
    # Recherche d'un abonné 
    print("\n\nQuel abonné cherchez-vous ? "); 
    $abbX = <STDIN>; 
    chomp($abbX); # suppression du saut de ligne 
    if (exists $abonnes{$abbX}) { 
    print("\n$abbX est abonné\nIl a emprunté $abonnes{$abbX} DVD"); 
    } else { 
    print("\n$abbX n'est pas abonné\n"); 
    } 
     
    # retour d'un ou plusieurs DVD 
    print'"\n\nCombien de DVD coulez vous restituer?"); 
    while (($prenom,$nbDVD) = each %abonnes) { 
    if ($nbDVD > $maxDVD) { 
    $DVD = $nbDVD; 
    $restitué = $prenom; 
    } 
    } 
    print ("\nIl a restitué $DVD DVD"); 
     
    # Quitter 
    print("\n\nAu revoir\n\n");

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2013
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 247
    Points : 406
    Points
    406
    Par défaut
    je pense que tu te retrouves bloqué pour les question 4 et 5 car ta construction de ton hash n'est pas optimale.
    Je ferait plutôt $abonnes{"Guillaume"} = ('DVD 1', 'DVD 2', ...);

    Ainsi, quand un abonné prend un DVD, tu l'ajoutes dans la liste, et quand il en rend, tu l'enlèves de la liste et pour savoir combien il en a, ben il suffit de regarder la taille de la liste

    j'ajouterais une règle pour la suppression d'un abonné (#3) : vérifier qu'il n'a plus de DVD à rendre (surtout si le travail a une application réelle


    Voilà quelques pistes et si besoin/blocage dans ton code dis-le et on verra ce qu'on peut faire pour t'aider

    PS: Pourrais-tu indenter ton code et le mettre dans la balise code afin que ce soit lisible?
    Ajoute le use strict; et use warning; à ton code.


    Edit: il manque le menu qui appelle les différents morceaux de code que tu as produiits et qu'il serait mieux d'intégrer comme une fonction ou avec un case (comme tu souhaites)
    A quoi correspond le $abonnes{"Michel"} = undef; ? 1 abonné qui n'a jamais emprunté? Pourquoi faire la différence entre 0 et undef car tu ne t'en sers pas après?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Services de proximité

    Informations forums :
    Inscription : Septembre 2014
    Messages : 19
    Points : 5
    Points
    5
    Par défaut Version modifiée
    Bonjour,

    Voici les modifications, cependant j'aurais besoin de votre aide pour pouvoir mettre ce programme accessible dans un menu contextuel

    1
    2
    3
    4
    5
    6


    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
     
     
    #!/usr/bin/perl
     
    use strict; 
    use warning; 
     
    # La liste des emprunteurs est donnée par une table de hachage %abonnes 
    # Clé : indentifiant = prénom pour simplifier 
    # Valeur : nb de DVD empruntés 
    # Création de la table : 
     
    $abonnes{"Guillaume"} = 3; 
    $abonnes{"Maxime"} = 15; 
    $abonnes{"Anne"} = 0; # abonné qui a déjà emprunté mais aucun emprunt en cours 
    $abonnes{"Michel"} = undef; 
     
    # Affichage 
     
    print("\n\nAffichage de la DVDthèque"); 
    while (($prenom,$nbDVD) = each %abonnes) { 
    print "\n$prenom est abonné"; 
    # si le nb de DVD n'est pas undef 
    if (defined($nbDVD)) { 
    print("\n\tnb de DVD empruntés : $nbDVD"); 
    } else { 
    print("\n\tIl n'a jamais emprunté de DVD"); 
    } 
    } 
     
    # Ajout d'un nouvel abonné sans emprunt 
     
    print("\n\nAjout d'un nouvel abonné sans emprunt"); 
    print("\nQui souhaitez-vous ajouter ? "); 
    $newAbonne =<STDIN>; 
    chomp($newAbonne); # suppression du saut de ligne 
    $abonnes{"$newAbonne"} = undef; # abonné sans emprunt 
     
    # Affichage 
     
    print("\n\nAffichage de la DVDthèque"); 
    while (($prenom,$nbDVD) = each %abonnes) { 
    print("\n$prenom est abonné"); 
    # si le nb de DVD n'est pas undef 
    if (defined($nbDVD)) { 
    print("\n\tnb de DVD empruntés : $nbDVD"); 
    } else { 
    print("\n\tIl n'a jamais emprunté de DVD"); 
    } 
    } 
     
    # Révocation d'un abonné : delete 
     
    print("\n\nQuel User souhaitez vous supprimer?"); 
    $user= <>; 
    chomp($user); 
    delete ($abonnes {$user}); 
     
    # Affichage 
     
    print("\n\nAffichage de la DVDthèque"); 
    while (($prenom,$nbDVD) = each %abonnes) { 
    print("\n$prenom est abonné"); 
    # si le nb de DVD n'est pas undef 
    if (defined($nbDVD)) { 
    print("\n\tnb de DVD empruntés : $nbDVD"); 
    } else { 
    print("\n\tIl n'a jamais emprunté de DVD"); 
    } 
    } 
     
    # Emprunt d'un ou plusieurs DVD 
     
    print("\n\nCombien de DVD voulez vous emprunter?"); 
    $maxDVD = -1; # le max de DVD empruntés 
    while (($prenom,$nbDVD) = each %abonnes) { 
    if ($nbDVD > $maxDVD) { 
    $DVD = $nbDVD; 
    $abonnes = $DVD; 
    } 
    } 
    print("\nIl a emprunté $DVD DVD"); 
     
    # Recherche d'un abonné 
     
    print("\n\nQuel abonné cherchez-vous ? "); 
    $abbX = <STDIN>; 
    chomp($abbX); # suppression du saut de ligne 
    if (exists $abonnes{$abbX}) { 
    print("\n$abbX est abonné\nIl a emprunté $abonnes{$abbX} DVD"); 
    } else { 
    print("\n$abbX n'est pas abonné\n"); 
    } 
     
    # retour d'un ou plusieurs DVD 
     
    print "\n\nCombien de DVD voulez vous restituer?"); 
    while (($prenom,$nbDVD) = each %abonnes) { 
    if ($nbDVD > $maxDVD) { 
    $DVD = $nbDVD; 
    $restitue = $prenom; 
    } 
    } 
    print ("\nIl a restitue $DVD DVD"); 
     
    # Quitter 
     
    print ("\n\nAu revoir\n\n");

  4. #4
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par 6ril23 Voir le message
    Je ferait plutôt $abonnes{"Guillaume"} = ('DVD 1', 'DVD 2', ...);
    Cela ne marchera pas, on ne peut pas mettre une liste dans un élément de hash. Ce code conduit à mettre seulement le dernier DVD de la liste dans le hash et à perdre les autres DVD.

    Il faut utiliser une référence sur la liste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $abonnes{"Guillaume"} = ['DVD 1', 'DVD 2', ...];
    pour obtenir un hash de tableaux.

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2013
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 247
    Points : 406
    Points
    406
    Par défaut
    @Lolo78 : oui effectivement j'ai écrit trop vite.

    Pour le menu tu peux faire quelque chose du genre (vite fait et pas top):

    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
    #!/usr/bin/perl
    # La liste des emprunteurs est donnée par une table de hachage %abonnes
    # Clé : indentifiant = prénom pour simplifier
    # Valeur : nb de DVD empruntés
    # Création de la table :
    $abonnes{"Guillaume"} = 3;
    $abonnes{"Maxime"} = 15;
    $abonnes{"Anne"} = 0; # abonné qui a déjà emprunté mais aucun emprunt en cours
    $abonnes{"Michel"} = undef;
     
    while (1){
    	print "################## Menu ##################\n";
    	print "#                                        #\n";
    	print "# 1 - Affichage de la DVDthéque          #\n";
    	print "# 2 - Ajoute d'un abonné                 #\n";
    	print "# 3 - Suppression d'un abonné            #\n";
    	print "# 4 - Emprunt de DVD                     #\n";
    	print "# 5 - Retour de DVD                      #\n";
    	print "# 6 - Quitter                            #\n";
    	print "#                                        #\n";
    	print "##########################################\n";
     
     
    	print "choix : ";
    	my $choix=<STDIN>;
     
    	if ( $choix eq '1' ){
    		#Traitement ...
    	}
    	elsif ( $choix eq '2' ){
    		#Traitement ...
    	}
    	elsif ( $choix eq '3' ){
    		#Traitement ...
    	}
    	elsif ( $choix eq '4' ){
    		#Traitement ...
    	}
    	elsif ( $choix eq '5' ){
    		#Traitement ...
    	}
    	elsif ( $choix eq '6' ){
    		exit 0;
    	}
    	else{
    		print "Votre choix n'est pas dans ceux proposes\n";
    	}
    }
    Edit: Pour le choix 1, je pense que la DVDthèque est l'ensemble des DVD ou l'ensemble de DVD disponibles

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Services de proximité

    Informations forums :
    Inscription : Septembre 2014
    Messages : 19
    Points : 5
    Points
    5
    Par défaut Code modifié
    Voci mon code modifié :


    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
     #!/usr/bin/perl
     
    use strict; 
    use warning;
    my $i=0;
    my @DVD;  
     
    # La liste des emprunteurs est donnée par une table de hachage %abonnes
    # Clé : indentifiant = prénom pour simplifier
    # Valeur : nb de DVD empruntés
    # Création de la table :
    $abonnes{"Guillaume"} = 3;
    $abonnes{"Maxime"} = 15;
    $abonnes{"Anne"} = 0; # abonné qui a déjà emprunté mais aucun emprunt en cours
    $abonnes{"Michel"} = undef;
     
    while (1){
    	print "################## Menu ##################\n";
    	print "#                                        #\n";
    	print "# 1 - Affichage de la DVDthéque          #\n";
    	print "# 2 - Ajoute d'un abonné                 #\n";
    	print "# 3 - Suppression d'un abonné            #\n";
    	print "# 4 - Emprunt de DVD                     #\n";
    	print "# 5 - Retour de DVD                      #\n";
    	print "# 6 - Quitter                            #\n";
    	print "#                                        #\n";
    	print "##########################################\n";
     
     
    	print "choix : ";
    	my $choix=<STDIN>;
     
    	if ( $choix eq '1' ){
    		print("\n\nAffichage de la DVDthèque"); 
    while (($prenom,$nbDVD) = each %abonnes) { 
    print "\n$prenom est abonné"; 
    # si le nb de DVD n'est pas undef 
    if (defined($nbDVD)) { 
    print("\n\tnb de DVD empruntés : $nbDVD"); 
    } else { 
    print("\n\tIl n'a jamais emprunté de DVD"); 
    } 
    } 
    	}
    	elsif ( $choix eq '2' ){
    		# Ajout d'un nouvel abonné sans emprunt
     
    print("\n\nAjout d'un nouvel abonné sans emprunt");
    print("\nQui souhaitez-vous ajouter ?");
    $newAbonne =<STDIN>;
    chomp($newAbonne); # suppression du saut de ligne
    $abonnes{"$newAbonne"} = undef; # abonné sans emprunt
    	}
    	elsif ( $choix eq '3' ){
    		# Révocation d'un abonné : delete
     
    print("\n\nQuel User souhaitez vous supprimer?");
    $user= <>;
    chomp($user);
    delete ($abonnes {$user}) ;
    	}
    	elsif ( $choix eq '4' ){
    		# Emprunt d'un ou plusieurs DVD
    print("\n\nCombien de DVD voulez vous emprunter?");
    $maxDVD = -1; # le max de DVD emprunter
    while (($prenom,$nbDVD) = each %abonnes) {
    $DVD[$i]=$user
    $i++
    if ($nbDVD > $maxDVD) {
    $DVD = $nbDVD;
    $Emprunteur = $prenom;
    }
    }
    print("\nIl a emprunté $DVD DVD"); 
    	}
    	elsif ( $choix eq '5' ){
    		# retour d'un ou plusieurs DVD
    print"\n\nCombien de DVD voulez vous restituer?");
    while (($prenom,$nbDVD) = each %abonnes) {
    $DVD[$i]=$user
    $i--
    if ($nbDVD > $maxDVD) {
    $DVD = $nbDVD;
    $restituer = $prenom;
    }
    }
    print ("\nIl a restitué $DVD DVD"); 
    	}
    	elsif ( $choix eq '6' ){
    		exit 0;
    	}
    	else{
    		print "Votre choix n'est pas dans ceux proposes\n";
    	}
    }

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Services de proximité

    Informations forums :
    Inscription : Septembre 2014
    Messages : 19
    Points : 5
    Points
    5
    Par défaut Code modifié
    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
     #!/usr/bin/perl
     
    use strict; 
    use warning;
    my $i=0;
    my @DVD;  
     
    # La liste des emprunteurs est donnée par une table de hachage %abonnes
    # Clé : indentifiant = prénom pour simplifier
    # Valeur : nb de DVD empruntés
    # Création de la table :
    $abonnes{"Guillaume"} = 3;
    $abonnes{"Maxime"} = 15;
    $abonnes{"Anne"} = 0; # abonné qui a déjà emprunté mais aucun emprunt en cours
    $abonnes{"Michel"} = undef;
     
    while (1){
    	print "################## Menu ##################\n";
    	print "#                                        #\n";
    	print "# 1 - Affichage de la DVDthéque          #\n";
    	print "# 2 - Ajoute d'un abonné                 #\n";
    	print "# 3 - Suppression d'un abonné            #\n";
    	print "# 4 - Emprunt de DVD                     #\n";
    	print "# 5 - Retour de DVD                      #\n";
    	print "# 6 - Quitter                            #\n";
    	print "#                                        #\n";
    	print "##########################################\n";
     
     
    	print "choix : ";
    	my $choix=<STDIN>;
     
    	if ( $choix eq '1' ){
    		print("\n\nAffichage de la DVDthèque"); 
    while (($prenom,$nbDVD) = each %abonnes) { 
    print "\n$prenom est abonné"; 
    # si le nb de DVD n'est pas undef 
    if (defined($nbDVD)) { 
    print("\n\tnb de DVD empruntés : $nbDVD"); 
    } else { 
    print("\n\tIl n'a jamais emprunté de DVD"); 
    } 
    } 
    	}
    	elsif ( $choix eq '2' ){
    		# Ajout d'un nouvel abonné sans emprunt
     
    print("\n\nAjout d'un nouvel abonné sans emprunt");
    print("\nQui souhaitez-vous ajouter ?");
    $newAbonne =<STDIN>;
    chomp($newAbonne); # suppression du saut de ligne
    $abonnes{"$newAbonne"} = undef; # abonné sans emprunt
    	}
    	elsif ( $choix eq '3' ){
    		# Révocation d'un abonné : delete
     
    print("\n\nQuel User souhaitez vous supprimer?");
    $user= <>;
    chomp($user);
    delete ($abonnes {$user}) ;
    	}
    	elsif ( $choix eq '4' ){
    		# Emprunt d'un ou plusieurs DVD
    print("\n\nCombien de DVD voulez vous emprunter?");
    $maxDVD = -1; # le max de DVD emprunter
    while (($prenom,$nbDVD) = each %abonnes) {
    $DVD[$i]=$user
    $i++
    if ($nbDVD > $maxDVD) {
    $DVD = $nbDVD;
    $Emprunteur = $prenom;
    }
    }
    print("\nIl a emprunté $DVD DVD"); 
    	}
    	elsif ( $choix eq '5' ){
    		# retour d'un ou plusieurs DVD
    print"\n\nCombien de DVD voulez vous restituer?");
    while (($prenom,$nbDVD) = each %abonnes) {
    $DVD[$i]=$user
    $i--
    if ($nbDVD > $maxDVD) {
    $DVD = $nbDVD;
    $restituer = $prenom;
    }
    }
    print ("\nIl a restitué $DVD DVD"); 
    	}
    	elsif ( $choix eq '6' ){
    		exit 0;
    	}
    	else{
    		print "Votre choix n'est pas dans ceux proposes\n";
    	}
    }

  8. #8
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2013
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 247
    Points : 406
    Points
    406
    Par défaut
    si je peux te donner un conseil, fais un effort sur l'indentation de ton code, tu verras c'est beaucoup plus facile à lire, à debugger et à maintenir.

  9. #9
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par 6ril23 Voir le message
    si je peux te donner un conseil, fais un effort sur l'indentation de ton code, tu verras c'est beaucoup plus facile à lire, à debugger et à maintenir.
    Je plussoie. ++.

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Services de proximité

    Informations forums :
    Inscription : Septembre 2014
    Messages : 19
    Points : 5
    Points
    5
    Par défaut Nouveau code
    Voici mon nouveaui code modifié et corrigé. Merci de vos conseils :




    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
     #!/usr/bin/perl 
     
    use strict; 
    use warnings; 
    my $i=0; 
    my @DVD;
    my $emprunteur;
    my $restituer;
    my $abonnes;
    my $prenom;
    my $restituer;
    my $n;
     
     
    # La liste des emprunteurs est donnée par une table de hachage %abonnes 
    # Clé : indentifiant = prénom pour simplifier 
    # Valeur : nb de DVD empruntés 
    # Création de la table : 
     
    $abonnes{"Guillaume"} = 3; 
    $abonnes{"Maxime"} = 15; 
    $abonnes{"Anne"} = 0; # abonné qui a déjà emprunté mais aucun emprunt en cours 
    $abonnes{"Michel"} = undef; 
     
    while (1){ 
    print "################## Menu ##################\n"; 
    print "# #\n"; 
    print "# 1 - Affichage de la DVDthéque #\n"; 
    print "# 2 - Ajoute d'un abonné #\n"; 
    print "# 3 - Suppression d'un abonné #\n"; 
    print "# 4 - Emprunt de DVD #\n"; 
    print "# 5 - Retour de DVD #\n"; 
    print "# 6 - Quitter #\n"; 
    print "# #\n"; 
    print "##########################################\n"; 
     
     
    print "choix : "; 
    my $choix=<STDIN>; 
     
    if ( $choix eq '1' ){ 
     
    	print("\n\nAffichage de la DVDthèque"); 
     
    while (($prenom,$nbDVD) = each %abonnes) { 
    print "\n$prenom est abonne"; 
    # si le nb de DVD n'est pas undef 
    if (defined($nbDVD)) { 
    print("\n\tnb de DVD empruntes : $nbDVD"); 
    } else { 
    print("\n\tIl n'a jamais emprunte de DVD"); 
    } 
    } 
    } 
     
     
    elsif ( $choix eq '2' ){ 
     
    	# Ajout d'un nouvel abonné sans emprunt 
     
    print("\n\nAjout d'un nouvel abonné sans emprunt"); 
    print("\nQui souhaitez-vous ajouter ?"); 
    $newAbonne =<STDIN>; 
    chomp($newAbonne); # suppression du saut de ligne 
    $abonnes{"$newAbonne"} = undef; # abonné sans emprunt 
    } 
     
    elsif ( $choix eq '3' ){ 
     
    	# Révocation d'un abonné : delete 
     
    print("\n\nQuel User souhaitez vous supprimer?"); 
    $user= <>; 
    chomp($user); 
    delete ($abonnes {$user}) ; 
    } 
     
    elsif ( $choix eq '4' ){ 
     
    	# Emprunt d'un ou plusieurs DVD 
     
    print("\n\nCombien de DVD voulez vous emprunter?"); 
    $maxDVD = -1; # le max de DVD emprunter 
    while (($prenom,$nbDVD) = each %abonnes) { 
    $DVD[$i]=$user; 
    $i++; 
    if ($nbDVD > $maxDVD) { 
    $DVD = $nbDVD; 
    $Emprunteur = $prenom;
    $abonnes{$emprunteur} = $abonnes{$emprunteur} + $n; 
    } 
    } 
    print("\nIl a emprunte $DVD DVD"); 
    } 
     
    elsif ( $choix eq '5' ){ 
     
    	# retour d'un ou plusieurs DVD 
     
    print"\n\nCombien de DVD voulez vous restituer?"); 
    while (($prenom,$nbDVD) = each %abonnes) { 
    $DVD[$i]=$user; 
    $i--; 
    if ($nbDVD > $maxDVD) { 
    $DVD = $nbDVD; 
    $restituer = $prenom;
    $abonnes{$restituer} = $abonnes{$restituer} - $n; 
    } 
    } 
    print ("\nIl a restitue $DVD DVD"); 
    } 
     
    elsif ( $choix eq '6' ){ 
    exit 0; 
    } 
    else{ 
    print "Votre choix n'est pas dans ceux proposes\n"; 
    } 
    }

  11. #11
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2013
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 247
    Points : 406
    Points
    406
    Par défaut
    Voilà ton code réellement indenté: tu décale le contenu de chaque "block" (if, while...)
    si tu as beaucoup de code et pas le temps/envie de tout reprendre à la main, utilise perltidy

    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    #!/usr/bin/perl 
     
    use strict; 
    use warnings; 
    my $i=0; 
    my @DVD;
    my $emprunteur;
    my $restituer;
    my $abonnes;
    my $prenom;
    my $restituer;
    my $n;
     
     
    # La liste des emprunteurs est donnée par une table de hachage %abonnes 
    # Clé : indentifiant = prénom pour simplifier 
    # Valeur : nb de DVD empruntés 
    # Création de la table : 
     
    $abonnes{"Guillaume"} = 3; 
    $abonnes{"Maxime"} = 15; 
    $abonnes{"Anne"} = 0; # abonné qui a déjà emprunté mais aucun emprunt en cours 
    $abonnes{"Michel"} = undef; 
     
    while (1){ 
    	print "################## Menu ##################\n"; 
    	print "# #\n"; 
    	print "# 1 - Affichage de la DVDthéque #\n"; 
    	print "# 2 - Ajoute d'un abonné #\n"; 
    	print "# 3 - Suppression d'un abonné #\n"; 
    	print "# 4 - Emprunt de DVD #\n"; 
    	print "# 5 - Retour de DVD #\n"; 
    	print "# 6 - Quitter #\n"; 
    	print "# #\n"; 
    	print "##########################################\n"; 
     
     
    	print "choix : "; 
    	my $choix=<STDIN>; 
     
    	if ( $choix eq '1' ){ 
     
    		print("\n\nAffichage de la DVDthèque"); 
     
    		while (($prenom,$nbDVD) = each %abonnes) { 
    			print "\n$prenom est abonne"; 
    			# si le nb de DVD n'est pas undef 
    			if (defined($nbDVD)) { 
    				print("\n\tnb de DVD empruntes : $nbDVD"); 
    			} else { 
    				print("\n\tIl n'a jamais emprunte de DVD"); 
    			} 
    		} 
    	} 
     
     
    	elsif ( $choix eq '2' ){ 
     
    		# Ajout d'un nouvel abonné sans emprunt 
     
    		print("\n\nAjout d'un nouvel abonné sans emprunt"); 
    		print("\nQui souhaitez-vous ajouter ?"); 
    		$newAbonne =<STDIN>; 
    		chomp($newAbonne); # suppression du saut de ligne 
    		$abonnes{"$newAbonne"} = undef; # abonné sans emprunt 
    	} 
     
    	elsif ( $choix eq '3' ){ 
     
    		# Révocation d'un abonné : delete 
     
    		print("\n\nQuel User souhaitez vous supprimer?"); 
    		$user= <>; 
    		chomp($user); 
    		delete ($abonnes {$user}) ; 
    	} 
     
    	elsif ( $choix eq '4' ){ 
     
    		# Emprunt d'un ou plusieurs DVD 
     
    		print("\n\nCombien de DVD voulez vous emprunter?"); 
    		$maxDVD = -1; # le max de DVD emprunter 
    		while (($prenom,$nbDVD) = each %abonnes) { 
    			$DVD[$i]=$user; 
    			$i++; 
    			if ($nbDVD > $maxDVD) { 
    				$DVD = $nbDVD; 
    				$Emprunteur = $prenom;
    				$abonnes{$emprunteur} = $abonnes{$emprunteur} + $n; 
    			} 
    		} 
    		print("\nIl a emprunte $DVD DVD"); 
    	} 
     
    	elsif ( $choix eq '5' ){ 
     
    		# retour d'un ou plusieurs DVD 
     
    		print"\n\nCombien de DVD voulez vous restituer?"); 
    		while (($prenom,$nbDVD) = each %abonnes) { 
    			$DVD[$i]=$user; 
    			$i--; 
    			if ($nbDVD > $maxDVD) { 
    				$DVD = $nbDVD; 
    				$restituer = $prenom;
    				$abonnes{$restituer} = $abonnes{$restituer} - $n; 
    			} 
    		} 
    		print ("\nIl a restitue $DVD DVD"); 
    	} 
     
    	elsif ( $choix eq '6' ){ 
    		exit 0; 
    	} 
    	else{ 
    		print "Votre choix n'est pas dans ceux proposes\n"; 
    	} 
    }
    Par contre je ne sais pas si c'est voulu mais je n'arrive pas à comprendre comment tu peux faire sans avoir une liste de DVD (comment afficher la DVDthèque=nom des DVD dispo) et sa gestion : 2 personne ne peuvent pas emprunter le même livre, on ne peut pas prendre un livre qui n'existe pas, on ne peut pas rendre un livre qu'on a pas pris...

    As-tu un vrai sujet clair car j'ai un peu l'impression que tu essaies de construire par bout quelque chose MAIS il faut penser avant à ce qu'on souhaite.




    Pour essayer de formaliser, je pense qu'il faut:

    - Avoir une liste de DVD
    - Avoir une liste d'abonnés (en fait clés de ton %hash)
    pour tes points:
    # 1 - Affichage de la DVDthéque => affichage des DVD non empruntés
    # 2 - Ajoute d'un abonné => Ajout d'une clé de ton %hash
    # 3 - Suppression d'un abonné => Suppression d'une clé de ton %hash
    # 4 - Emprunt de DVD => Tu ajoutes 1/+ DVD à la liste des emprunts de l'abonné (dans la limite autorisée) et tu les enlèves de l'inventaire (DVDthèque), EN GERANT LE FAIT QUE LE DVD EST BIEN DISPO
    # 5 - Retour de DVD => Tu enlèves 1/+ DVD à la liste des emprunts de l'abonnéet tu les ajoutes à l'inventaire (DVDthèque), EN GERANT LE FAIT QUE LE DVD EST BIEN EMPRUNTE par cet abonné

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Services de proximité

    Informations forums :
    Inscription : Septembre 2014
    Messages : 19
    Points : 5
    Points
    5
    Par défaut nouveau code
    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    #!/usr/bin/perl
    use strict;
    use warnings;
     
    my $i=0;
    my @DVD;
    my $emprunteur;
    my $prenom;
    my $n;
    my %abonnes;
    my $nbDVD;
    my $newAbonne;
    my $user;
    my $maxDVD;
    my $DVD;
    my $restituer;
     
    # La liste des emprunteurs est donnée par une table de hachage %abonnes
    # Clé : indentifiant = prénom pour simplifier
    # Valeur : nb de DVD empruntés
    # Création de la table :
     
    $abonnes{"Guillaume"} = 3;
    $abonnes{"Maxime"} = 15;
    $abonnes{"Anne"} = 0; # abonné qui a déjà emprunté mais aucun emprunt en cours
    $abonnes{"Michel"} = 0;
     
    while (1){
    print "################## Menu ##################\n";
    print "# #\n";
    print "# 1 - Affichage de la DVDthéque #\n";
    print "# 2 - Ajoute d'un abonné #\n";
    print "# 3 - Suppression d'un abonné #\n";
    print "# 4 - Emprunt de DVD #\n";
    print "# 5 - Retour de DVD #\n";
    print "# 6 - Quitter #\n";
    print "# #\n";
    print "##########################################\n";
    print "choix : ";
    my $choix=<STDIN>;
     
    if ( $choix == 1 ){
    print("\n\nAffichage de la DVDthèque" );
    while (($prenom,$nbDVD) = each %abonnes) {
     print "\n$prenom est abonne";
     # si le nb de DVD n'est pas undef
     if (defined($nbDVD)) {
       print("\n\tnb de DVD empruntes : $nbDVD" );
     } else {
       print("\n\tIl n'a jamais emprunte de DVD" );
     }
    }
    }
    elsif ( $choix == 2 ){
    # Ajout d'un nouvel abonné sans emprunt
    print("\n\nAjout d'un nouvel abonné sans emprunt" );
    print("\nQui souhaitez-vous ajouter ?" );
    $newAbonne =<STDIN>;
    chomp($newAbonne); # suppression du saut de ligne
    $abonnes{"$newAbonne"} = undef; # abonné sans emprunt
    }
    elsif ( $choix == 3 ){
    # Révocation d'un abonné : delete
    print("\n\nQuel User souhaitez vous supprimer?" );
    $user= <>;
    chomp($user);
    delete ($abonnes {$user}) ;
    }
    elsif ( $choix == 4 ){
    # Emprunt d'un ou plusieurs DVD
    print("\n\nCombien de DVD voulez vous emprunter?" );
    $maxDVD = -1; # le max de DVD emprunter
    while (($prenom,$nbDVD) = each %abonnes) {
     $DVD[$i]=$user;
     $i++;
     if ($nbDVD > $maxDVD) {
       $DVD = $nbDVD;
       $emprunteur = $prenom;
       $abonnes{$emprunteur} = $abonnes{$emprunteur} + $n;
     }
    }
    print("\nIl a emprunte $DVD DVD" );
    }
    elsif ( $choix == 5 ){
    # retour d'un ou plusieurs DVD
    print"\n\nCombien de DVD voulez vous restituer?";
    while (($prenom,$nbDVD) = each %abonnes) {
     $DVD[$i]=$user;
     $i--;
     if ($nbDVD > $maxDVD) {
       $DVD = $nbDVD;
       $restituer = $prenom;
       $abonnes{$restituer} = $abonnes{$restituer} - $n;
     }
    }
    print ("\nIl a restitue $DVD DVD" );
    }
    elsif ( $choix == 6 ){
    exit 0;
    }
    else{
    print "Votre choix n'est pas dans ceux proposes\n";
    }
    }

  13. #13
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    OK, sympa de poster ton nouveau code corrigé, mais sans aucun commentaire, ce n'est pas trop utile... car on ne sait quoi en penser. Il fait ce que tu veux, ou pas? Si oui, tant mieux. Sinon, c'est quoi le problème? En quoi le résultat diffère-t-il de ce que tu veux?

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Services de proximité

    Informations forums :
    Inscription : Septembre 2014
    Messages : 19
    Points : 5
    Points
    5
    Par défaut Message erreur non compris
    Pour le choix 5 j'ai ce message d'erreur que je ne comprends pas

    Use of uninitialized value $maxDVD in numeric gt (>) at perl.pl line 90, <STDIN> line 1.
    Use of uninitialized value $n in subtraction (-) at perl.pl line 93, <STDIN> line 1.
    Use of uninitialized value $maxDVD in numeric gt (>) at perl.pl line 90, <STDIN> line 1.
    Modification of non-creatable array value attempted, subscript -2 at perl.pl line 88, <STDIN> line 1.
    Pour le choix 4, J'ai ce message

    Use of uninitialized value $n in addition (+) at perl.pl line 79, <STDIN> line 3.
    Use of uninitialized value $n in addition (+) at perl.pl line 79, <STDIN> line 3.
    Use of uninitialized value $n in addition (+) at perl.pl line 79, <STDIN> line 3.
    Use of uninitialized value $n in addition (+) at perl.pl line 79, <STDIN> line 3
    Merci de votre aide!

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Services de proximité

    Informations forums :
    Inscription : Septembre 2014
    Messages : 19
    Points : 5
    Points
    5
    Par défaut Message erreur non compris
    Pour le choix 5 j'ai ce message d'erreur que je ne comprends pas

    Use of uninitialized value $maxDVD in numeric gt (>) at perl.pl line 90, <STDIN> line 1.
    Use of uninitialized value $n in subtraction (-) at perl.pl line 93, <STDIN> line 1.
    Use of uninitialized value $maxDVD in numeric gt (>) at perl.pl line 90, <STDIN> line 1.
    Modification of non-creatable array value attempted, subscript -2 at perl.pl line 88, <STDIN> line 1.
    Pour le choix 4, J'ai ce message

    Use of uninitialized value $n in addition (+) at perl.pl line 79, <STDIN> line 3.
    Use of uninitialized value $n in addition (+) at perl.pl line 79, <STDIN> line 3.
    Use of uninitialized value $n in addition (+) at perl.pl line 79, <STDIN> line 3.
    Use of uninitialized value $n in addition (+) at perl.pl line 79, <STDIN> line 3
    Merci de votre aide!

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 124
    Points : 94
    Points
    94
    Par défaut
    Salut.
    $DVD[$i] le compilateur connait . Mais $DVD le compilateur ne connait pas et s'exprime. peut être (c'est difficile de se plonger dans un code en 2 mnn)
    merci monsieur le compilateur de m'indiquer mon erreur.

  17. #17
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Services de proximité

    Informations forums :
    Inscription : Septembre 2014
    Messages : 19
    Points : 5
    Points
    5
    Par défaut non compris
    Citation Envoyé par vidici Voir le message
    Salut.
    $DVD[$i] le compilateur connait . Mais $DVD le compilateur ne connait pas et s'exprime.
    merci monsieur le compilateur de m'indiquer mon erreur.


    Pourtant c'est une variable que j'ai déclaré. Quand vous dite que le compilateur ne connait. Jai déjà utilisé cette expression dans d'autre programme.

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 124
    Points : 94
    Points
    94
    Par défaut
    Citation Envoyé par laisskamal Voir le message
    Pourtant c'est une variable que j'ai déclaré. Quand vous dite que le compilateur ne connait. Jai déjà utilisé cette expression dans d'autre programme.
    oui , j'ai pas trop le temps de me plonger dans ton code tout de suite là, mais ce qui n'est pas clair c'est $DVD[$i] = quelquechose, et ensuite c'est $DVD = quelquechose ...

  19. #19
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Citation Envoyé par vidici Voir le message
    oui , j'ai pas trop le temps de me plonger dans ton code tout de suite là, mais ce qui n'est pas clair c'est $DVD[$i] = quelquechose, et ensuite c'est $DVD = quelquechose ...
    Ce n'est pas l'erreur, car effectivement, $DVD est défini comme scalaire et @DVD comme tableau (j'utilise souvent ce nommage : le scalaire pour l'élément dans une boucle foreach et le tableau pour l'ensemble des éléments).

    Cela dit, quelque chose m'intrigue : $maxDVD est initialisé, mais jamais mis à jour
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 124
    Points : 94
    Points
    94
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    Ce n'est pas l'erreur, car effectivement, $DVD est défini comme scalaire et @DVD comme tableau (j'utilise souvent ce nommage : le scalaire pour l'élément dans une boucle foreach et le tableau pour l'ensemble des éléments).

    Cela dit, quelque chose m'intrigue : $maxDVD est initialisé, mais jamais mis à jour
    c'est exact. et comme il n'est pas défini, la comparaison échoue. bien vu je pense.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. problème sur des table temporaire
    Par xavier81 dans le forum Développement
    Réponses: 16
    Dernier message: 15/02/2011, 01h42
  2. Problème sur des tables
    Par seanbean dans le forum Oracle
    Réponses: 2
    Dernier message: 23/12/2010, 17h38
  3. Problème sur ALTER TABLE ADD (colonne)
    Par gafa5265 dans le forum Langage SQL
    Réponses: 12
    Dernier message: 11/03/2009, 22h32
  4. Problème de pointeur sur une table de hashage
    Par nicdesf dans le forum Langage
    Réponses: 3
    Dernier message: 07/09/2006, 19h23
  5. Problème de requêtes sur deux tables
    Par Pymm dans le forum Access
    Réponses: 6
    Dernier message: 06/09/2005, 09h06

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