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

C Discussion :

Exercice du k&r pas clair


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 293
    Par défaut Exercice du k&r pas clair
    Bonjour,

    voilà l'énoncé d'un des exercices du livres :


    Écrivez un programme detabuler qui remplace les caractères de tabulation qu'il reçoit par le nombre d'espaces nécessaires pour atteindre la prochaine tabulation. Considérez que les tabulations sont positionnées à intervalles réguliers, toutes les n colonnes. Faut-il que n soit une variable ou une constante symbolique?
    ce que j'ai compris c'est remplacé les \t par des espaces, si par exemple n = 3 je remplace chaque \t que je trouve par 3 espaces.

    Je me demande si j'ai bien compris? parce que dans le livre ils disent que cet exercice est compliqué, et là ça me parait trop simple, donc y doit y avoir quelque chose que je vois pas

    Merci

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    ce que j'ai compris c'est remplacé les \t par des espaces, si par exemple n = 3 je remplace chaque \t que je trouve par 3 espaces.
    Non, c'est plus complexe car tu dois savoir en quelle position sur la ligne tu te trouves et remplacer le '\t' par le nombre de blancs permettant d'aller à la prochaine position multiple de n . Exemple : (^ représentant un blanc)
    "abc\tdefg" -> "abc^^^defg"
    "abcd\tefg" -> "abcd^^efg"
    "abcde\tfg" -> "abcde^fg"
    "abcdef\tg" -> "abcdef^^^g"

  3. #3
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 293
    Par défaut
    Citation Envoyé par diogene
    Non, c'est plus complexe car tu dois savoir en quelle position sur la ligne tu te trouves et remplacer le '\t' par le nombre de blancs permettant d'aller à la prochaine position multiple de n . Exemple : (^ représentant un blanc)
    "abc\tdefg" -> "abc^^^defg"
    "abcd\tefg" -> "abcd^^efg"
    "abcde\tfg" -> "abcde^fg"
    "abcdef\tg" -> "abcdef^^^g"

    dans l'exemple que tu me donnes n = 1 non ??

    merci

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Non, n=3.
    Si on avait n=1, chaque tab ferait simplement 1 espace.

    Avec n=4, on aurait ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    "a\tbcdefghij" -> "a^^^bcdefghij"
    "ab\tcdefghij" -> "ab^^cdefghij"
    "abc\tdefghij" -> "abc^defghij" 
    "abcd\tefghij" -> "abcd^^^^efghij" 
    "abcde\tfghij" -> "abcde^^^fghij"
    "abcdef\tghij" -> "abcdef^^ghij"
    "abcdefg\thij" -> "abcdefg^hij"
    "abcdefgh\tij" -> "abcdefgh^^^^ij"
    "abcdefghi\tj" -> "abcdefghi^^^j"
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 293
    Par défaut
    j'ai vraiment du mal à saisir le principe

    je prends juste tes 2 premières lignes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    "a\tbcdefghij" -> "a^^^bcdefghij"
    "ab\tcdefghij" -> "ab^^cdefghij"

    on a dit n = 4, donc chaque tab doit faire 4 espaces, ce que je ne comprends pas :

    1 - pourquoi à chaque fois qu'on passe à la ligne suivante le \t se décale d'une position, pourquoi on aurait pas ça :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "a\tbcdefghij" -> "a^^^bcdefghij"
    "abc\tdefghij" -> "ab^^cdefghij"
    "abcde\tfghij" ->
    ou même encore à chaque ligne un décalage aléatoire de \t
    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    "\tabcdefghi"
    "\tabcdefghi"
    "ab\tcdefhgi"
    "a\tbcdefghi"
    PS : tout ça me fait mal à la tête, dire qu'y en a qui passent leur journées à la plage en ce moment

  6. #6
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    on a dit n = 4, donc chaque tab doit faire 4 espaces, ce que je ne comprends pas :
    Justement non. Une tabulation amène le curseur à la position suivante de tabulation qui dans cet exemple sont placées tout les 4 caractères
    pourquoi à chaque fois qu'on passe à la ligne suivante le \t se décale d'une position, pourquoi on aurait pas ça :
    Il s'agit d'exemples indépendants les uns des autres pour montrer comment la chaîne doit être transformée selon la position du \t dans la chaîne.

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

Discussions similaires

  1. tutorial ssl pas clair
    Par chillansky dans le forum Apache
    Réponses: 6
    Dernier message: 03/07/2007, 17h04
  2. [Dates] Pb avec dates, aides pas claires en fait :(
    Par zax-tfh dans le forum Langage
    Réponses: 4
    Dernier message: 10/09/2005, 13h55
  3. Trucs pas claire
    Par Freakazoid dans le forum DirectX
    Réponses: 2
    Dernier message: 09/07/2003, 21h10

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