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

Algorithmes et structures de données Discussion :

Machine à caractère


Sujet :

Algorithmes et structures de données

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Machine à caractère
    Bonsoir,

    J'ai un probleme d'algorithme à résoudre. J'ai cherche pas mal de temps avec toutes les boucles possibles (Si imbrique etc...) et j'ai toujours des soucis sur des tests qui ne marchent pas. Bref, voici l'enonce :

    C'est une machine a caractere qui a une fenetre qu'on appellera CARCOUR (caractere courant) et un ruban avec une serie de caracteres dont le dernier est un point "." On ne sait pas combien il y a de caracteres sur le ruban et la machine dispose de seulement 2 boutons :
    - le premier qui s'appelle Debut Ruban qui affiche le premier caractère du ruban
    - le deuxieme qui s'appelle Caractere suivant qui permet de passer au prochain caractere.
    La machine ne peut pas revenir en arrière.

    La question d'algo est de compter le nombre de fois qu'apparait les caracteres "LE" dans le ruban.
    Merci d'avance

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 192
    Points : 28 073
    Points
    28 073
    Par défaut
    En supposant un compteur pour compter le nombre d'occurrences, et un flag pour mémorisé que caractère "L" a été lu juste avant

    Donc à chaque caractère lu, il faut vérifier :

    • Si on a un caractère "L", on lève le flag, on passe au caractère suivant
    • Si on a un caractère "E",
      • Si le flag est levé, on incrémente le compteur, on baisse le flag, on passe au caractère suivant
      • Si le flag n'est pas levé, on passe au caractère suivant
    • Si on a un point, on baisse le flag, et on sort de la boucle
    • Si on a tout autre caractère, on baisse lea flag, et on passe au caractère suivant
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Que veut dire la notion de flag ?

    Je n'ai pas appris ce terme enfin ca ne me dit rien

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par bistouflex Voir le message
    Que veut dire la notion de flag ?

    Je n'ai pas appris ce terme enfin ca ne me dit rien
    Ca signifie drapeau, en référence aux boites aux lettres :



    C'est un indicateur qui à généralement deux positions :
    - baissé : rien à signaler
    - levé : il y a eu un évènement
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 192
    Points : 28 073
    Points
    28 073
    Par défaut
    En informatique, un flag se traduit souvent par une variable booléenne (vrai pour le flag levé, faux pour le flag baissé).

    Dans le cas te concernant (tout au moins dans la réponse que j'ai déjà donné), tu as principalement 2 possibilité pour ce "flag"
    - soit tu mémorise que tu as déjà lu un caractère "L" en levant un flag. Cela t'oblige à lecture d'un caractère à tester le flag pour savoir si le caractère précédent était le bon

    - soit tu mémorise le caractère précédemment lu. Là, tu n'as pas de flag à proprement parlé, mais cela va t'obliger à tester, en plus du caractère actuel, le caractère précédent que tu as mémorisé.

    Mais dans les 2 cas :
    - tu ne peux t'affranchir du test, soit du flag, soit du caractère précédent
    - tu dois pouvoir mémoriser une information d'un cycle à l'autre, soit le flag, soit le caractère précédent.
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Donc pour représenter le "flag", je peux créer une variable booléenne en disant que si le caractère est un "L" alors la variable est vrai sinon elle est fausse ?

  7. #7
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 192
    Points : 28 073
    Points
    28 073
    Par défaut
    Citation Envoyé par bistouflex Voir le message
    Donc pour représenter le "flag", je peux créer une variable booléenne en disant que si le caractère est un "L" alors la variable est vrai sinon elle est fausse ?
    C'est l'idée.

    Comme ça au tour de boucle suivant, si tu lis un "E" et que ton flag est Vrai, alors tu peux augmenter le compteur. Mais si tu lis un "E" et que ton flag est faux, alors tu ne peux pas augmenter le compteur car le coup d'avant tu n'avais pas eu de "L", et donc tu n'est pas en présence du couple "LE"
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  8. #8
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 368
    Points : 23 620
    Points
    23 620
    Par défaut
    Citation Envoyé par bistouflex Voir le message
    Donc pour représenter le "flag"
    À noter que flag est un terme extrêmement répandu en informatique, dans toutes les spécialités et pratiquement depuis le début de l'existence de la discipline. Autant que bit ou booléen.

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    À noter que flag est un terme extrêmement répandu en informatique, dans toutes les spécialités et pratiquement depuis le début de l'existence de la discipline. Autant que bit ou booléen.
    et que d'ailleurs en informatique flag ou drapeau est équivalent à booléen

    (comme sémaphore, sauf que sémaphore est principalement utilisé dans un certain contexte, mais la signification est identique)
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  2. delphi XML / HTML caractéres speciaux !
    Par adem dans le forum EDI
    Réponses: 2
    Dernier message: 29/08/2002, 17h48
  3. Newbie......compilateur et table de caractères
    Par Cyberf dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 21/08/2002, 14h29
  4. Adresse des polices de caractères dans la RAM video ?
    Par Anonymous dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 27/05/2002, 17h29
  5. Réponses: 3
    Dernier message: 09/05/2002, 01h39

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