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

Shell et commandes GNU Discussion :

[algo] Répartition de colis


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Lille
    Inscrit en
    Juin 2013
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lille
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 127
    Par défaut [algo] Répartition de colis
    Bonjour la communauté.

    Je galère depuis cette après-midi sur un algo.
    Je dois mettre en place un script sh pour écrire quelques lignes dans différents fichiers.
    Je m'explique, j'ai en entrée un fichier qui ressemble à celui-ci:
    NumArt NumCarton NumFichier(Attendu)
    ZZZ 88 1
    CCDE 88 1
    AZDSDS 454 2
    SDSEE 454 2
    AAZE 454 2
    TTGYH 65 2
    DFDF 874 3
    ARFFF 874 3
    TRUCC 21 3
    TOUCK 21 3

    Le fichier contient des numéros d'articles avec leurs numéros de cartons. La dernière colonne contient le numéro de fichier dans lequel on écrit ces articles.
    L'objectif est d'écrire un script en sh qui permet de créer un fichier contenant au maximum 4 articles. Il faut veiller à ne pas couper un carton. c'est pour cela que le 1er fichier ne contient que deux articles. Le 2ème fichier contient 4 articles appartenant à 2 cartons différents. (454 et 65), etc.
    J'ai essayé de créer deux tableaux dans lequel j'ai le numéros Articles et les numéro cartons puis pousser quelques lignes sous les conditions que j'ai expliquées ci-dessus:
    Pouvez-vous m'aider svp?

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 652
    Par défaut
    Bonjour,

    script sh
    il faut au moins bash pour avoir accès aux tableaux.
    ça doit être 100% «sh» (bash), ou tu peux utiliser d'autres langages ? awk serait mieux indiqué...
    La dernière colonne contient le numéro de fichier dans lequel on écrit ces articles.
    alors le travail est déjà fait, non ?

    J'ai essayé de créer deux tableaux dans lequel j'ai le numéros Articles et les numéro cartons
    il faudrait plutôt un tableau qui contient, pour chaque carton, le nombre d'article :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    carton[<n°Carton>]=<nbArticle>
    ...
    ?

    EDIT : le fichier en entrée est en HTML ? sinon, quel son véritable format ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre confirmé
    Homme Profil pro
    Lille
    Inscrit en
    Juin 2013
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lille
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 127
    Par défaut
    le script peut-être en awk.
    J'avais pensé au SH.
    Voici le code que j'avais commencé à écrire:

    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
     
    #!/bin/sh
    #set-x
    echo Declaration d\'un tableau a 1 colonne NumART
    declare -a  NumArt
    NumArt=(ZZZZ CCDE AZDSDS SDSEE AAAZE TTGYH DFDF ARFFF TRUCC TOUKC) 
    #echo ${NumArt[1]}
    echo Declaration d\'un tableau a 1 dimension NumCarton
    declare -a NumCarton
    NumCarton=(88 88 454 454 454 65 874 874 21 21)
    #echo ${NumCarton[*]}
     
    variable=$NumCarton[0]
    touch fichier.txt
    Nbre_lig_fic= cat fichier.txt | wc -l
    while [[ $Nbre_lig_fic -le 1 ]]
    do 
    	if ["$variable" -eq $NumCarton[1]]
    	then  "$NumArt[0]" "$NumCarton[0]" >> fichier.txt
    	fi
    done
    #cat fichier.txt
    J'avais commencé par créer deux tableaux.
    J'ai fais une boucle pour pouvoir pousser chaque ligne selon les conditions énoncées dans mon poste précédent dans un fichier.

    Voilà ou j'en suis maintenant.

    La dernière colonne contient les numéros de fichiers. Au final je dois avoir 3 fichiers.

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Citation Envoyé par bricko Voir le message
    j'ai en entrée un fichier qui ressemble à celui-ci
    N_Bah t'a demandé son format exact. Un fichier texte ? Le séparateur des éléments ? Est-il toujours trié (comme c'est montré) par n° de carton ?

    Citation Envoyé par bricko Voir le message
    La dernière colonne contient le numéro de fichier dans lequel on écrit ces articles.
    N_Bah t'a indiqué que cela résolvait tout non ? Si tu as déjà l'info de savoir dans quel fichier écrire tu n'as plus à faire d'algo. Te suffit juste de prendre le fichier indiqué et d'écrire quoi !!!

    Quoi qu'il en soit sh est tout à fait capable de faire ce genre de truc mais moi je passerais quand-même par un langage plus puissant comme Python. Il offre quand-même bien plus d'outils qui, selon les réponses aux questions ci-dessus, pourraient être utiles (notemment une possibilité de tri de tableau selon une clef que tu définis)...

    Citation Envoyé par bricko Voir le message
    Voici le code que j'avais commencé à écrire:
    Ton code ne prend absolument pas de fichier en input, tu lui as mis les valeurs en dur !!!???!!!
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre confirmé
    Homme Profil pro
    Lille
    Inscrit en
    Juin 2013
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lille
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 127
    Par défaut
    J'ai choisi de commencer par un tableau.

    La dernière colonne indique effectivement le fichier. Mais elle n'est pas dans mon input. En input, j'ai un fichier en deux colonnes.
    Pour faciliter les choses, je l'ai transformé en tableau à 1 dimension pour pouvoir le manipuler.
    Le script sh est imposé.

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 652
    Par défaut
    bien sûr, tu as testé ton script, et il fonctionne à peu près
    parce que tel quel, il est plein d'erreurs.

    normalement, /bin/sh ne supporte pas les tableaux.
    ça peut être un alias vers bash, mais alors le shebang doit être /bin/bash.
    on indique /bin/sh pour dire que le code est strictement POSIX, c'est à dire sans test étendu, tableaux ...

    je te recommande de lire les tutoriels inscrits dans ma signature.

    Citation Envoyé par bricko
    En input, j'ai un fichier en deux colonnes.
    Citation Envoyé par Sve@r
    N_Bah t'a demandé son format exact.
    .

    Le script sh est imposé.
    voir plus haut
    shc'est à dire ? du code strictement POSIX ? ou bash, et que bash, et donc pas de solutions en awk ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Membre confirmé
    Homme Profil pro
    Lille
    Inscrit en
    Juin 2013
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lille
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 127
    Par défaut
    Le sh arrive normalement à gérer les tableaux à une dimension.
    Oui le code contient plusieurs erreurs et je suis entrain de les corriger.
    Je tente d'inscrire une ligne dans un fichier mais je n'y arrive.
    En input, j'ai deux tableaux à 1 dimension.

    voici le code que j'ai jusqu'à maintenant:
    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
     
    #!/bin/sh
    #set-x
    echo Declaration d\'un tableau a 1 colonne NumART
    declare -a  NumArt
    NumArt=(ZZZZ CCDE AZDSDS SDSEE AAAZE TTGYH DFDF ARFFF TRUCC TOUKC) 
    echo ${NumArt[*]}
    echo Declaration d\'un tableau a 1 dimension NumCarton
    declare -a NumCarton
    NumCarton=(88 88 454 454 454 65 874 874 21 21)
    echo ${NumCarton[*]}
     
    variable=${NumCarton[0]}
    varbis=${NumCarton[1]}
    echo $varbis
    echo $variable
    touch fichier.txt
    Nbre_lig_fic= cat fichier.txt | wc -l
    echo $Nbre_lig_fic
    while [[ $Nbre_lig_fic -le 1 ]]
    do 
    	if [ "$variable" -eq "$varbis" ];
     
    	then  "$variable" >> fichier.txt
     
    	else echo "not good!"
    	fi
    done
    #cat fichier.txt

  8. #8
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 652
    Par défaut
    Le sh arrive normalement à gérer les tableaux à une dimension.
    parce que c'est un alias vers /bin/bash, ou parce que tu appelles ton script avec bash (bash tonScript ).
    sh est le Bourne SHell, sur lequel est fondée la norme POSIX, qui ne définit pas les tableaux.
    des shells plus évolués, tels que Korn SHell, ou Bourne Again SHell, possédent des tableaux unidimensionnels, indexés ou associatifs.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. [Oracle] prob algo : Répartition données
    Par olwin dans le forum SGBD
    Réponses: 4
    Dernier message: 23/04/2010, 16h54
  2. [RECHERCHE] Algo de répartition
    Par cybermaxs dans le forum Mathématiques
    Réponses: 5
    Dernier message: 17/11/2009, 09h04
  3. cherche algos Delphi pour : Huffman, R.S.A, D.E.S.
    Par X-Delphi dans le forum Débuter
    Réponses: 3
    Dernier message: 24/08/2002, 18h51
  4. Cherche l'algo crc 16 bits
    Par icepower dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 21/08/2002, 13h27
  5. Recherche algo tree
    Par Anonymous dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 24/05/2002, 13h44

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