Si ton interpréteur est correct, le "code mystère" doit partir en boucle infinie et avoir un affichage qui devrait vous rapeller quelquechose. (Ne pas dire quoi ici, merci)
Le BF a l'avantage d'être très proche du concept de machine de Turing qui est grossièrement l'abstraction mathématique de l'ordinateur.
Il se rapproche également de ce qu'était l'informatique à ses débuts où programmer voulait dire utiliser le langage machine et son jeu d'instruction pas beaucoup plus grand que celui du BF.
Pour ceux que le coté historique et "masturbation cérébrale" intéresse vous pouvez essayer de réaliser les petits codes suivants en BF (par ordre de difficulté):
1) Faire la somme de deux cases et mettre le résultat dans la cas d'à côté
2) Faire la multiplication de deux cases et mettre le résultat dans la cas d'à coté
3) Faire la somme mais avec retenue (si il y en a) et donc mettre le résultat dans 2 cases. (difficile)
Vous verrez alors que n'importe quel opération simple pour un humain est en réalité très complexe à écrire sous forme d'algorithme et de programme informatique. Et on a parlé ici que d'addition et de multiplication d'entier !
Regardes sur Wikipédia : pleins d'infos.
Sinon relis bien le post de Nanoc (merci Nanoc grâce à toi j'ai compris le BrainFuck, avant je connaissais ce langage mais je ne comprenais rien ).
j'aurai aimé savoir comment vous faites pour insérer directement '\n' lors d'un retour à la ligne dans votre texte? Vous le faîtes à la main ou vous c/c juste le texte (de wikipédia par exemple) et les \n \t se mettent automatiquement ?
Ba étant donné que dans l'exercice sur les stats on doit compter le nombre de paragraphes. Il faut repérer par exemple une succession de 2 "\n" qui représenté un retour à la ligne + un saut de ligne donc un second paragraphe. C'est un peu la façon dont je vois la chose.
Le problème est que si je saisi du texte dans mon bloc notes et que je veux faire un seconde paragraphe (donc deux fois la touche entrée), concrètement il n'y a pas de "\n" qui apparait.
Je sais pas si je suis clair dans mon explication ^^.
EDIT: Je viens de trouver une solution à mon problème.
Le Bloc-note (ortho ?) n'affiche que les caractères affichables. Il remplace les '\n' et autres trucs par leur équivalent humain le retour à la ligne, la tabulation,...
Mais les symboles son réelement dans le fichier.
Non,non il a sa place. Je vais simplifier le tout.
Il existe 127 (128 ?) caractères standards parmi ceux-ci, les lettre minuscules, les majuscules, les chiffres, les parenthèses et symboles courants. Les 32 premiers caractères de ce qu'on apelle en fait la table ASCII sont des caractères "de contrôle" (pas sûr que ce soit le nom officiel). Ils représentent par exemple le retour à la ligne, la tabulation, le bip console , ou le caractère de fin de fichier.
Tous ces caractères (donc les 32) ne sont pas affichables. Il n'existe pas de symbole "Fin de fichier" ou "retour à la ligne".
Quand le bloc-note ou la console (c'est le même "problème") rencontre ce caractère, il ne va pas l'afficher (puisqu'il ne peut pas !) mais faire l'action correspondant. Par exemble passer à la ligne suivante ou insérer une tabulation.
Jusque là rien d'intéressant pour le programmeur.
Maintenant, quand je programme, et que je veux par exemple insérer un retour à la ligne dans un fichier (retour à la ligne qui ne sera visible que lors de l'ouverture avec le bloc-note), il me faut bien un symbole pour représenter ce caractère. Il s'agit de la combinaison '\n'. Le programme écrit donc bien \n (ou plutot son équivalent ASCII) dans le fichier. Mais ce symbole n'est pas visible et quand tu ouvres via le bloc-note, tu vois un retour à la ligne comme attendu.
Ba moi je voulais ajouter à la main '\n\n' des qu'il repère un saut de ligne (donc un nouveau paragraphe). Mais bon comme tu vois sur l'image, il insére un caractère spéciale.
Car ceci :
if(caractere == 'n' && ancienCaractere == '\\')
ne repère pas dans mon fichier de base les retour à la ligne
Phoen clique sur la petite loupe et tu verras le texte tel que bloc-note l'interprète.
À la lecture tu ne dois pas lire avec l'opérateur << car il va arrêter à chaque caractère blanc (espace, \t, \n, \r ; y en a-t-il d'autres ? ) et il ne l'ajoute pas dans la chaine résultante. Utilise std::getline() plutôt.
Mattex, en faite dans mon main() je parcours ligne par ligne mon fichier avec std::getline() et je concatène le tout dans un string nommé texte. Et après j'envoie ceci à ma fonction d'analyse.
Pourquoi le code dessus ne détecte pas mes retour à la ligne ?
Mattex, en faite dans mon main() je parcours ligne par ligne mon fichier avec std::getline() et je concatène le tout dans un string nommé texte. Et après j'envoie ceci à ma fonction d'analyse.
Pourquoi le code dessus ne détecte pas mes retour à la ligne ?
Edit: quelle petite loupe ?
Si je me trompe pas, par defaut, getline lit tout le flux jusqu'au caractère '/n' et retourne la chaine lu donc si tu met tout bout a bout tu as tout le fichier sans les retour a la ligne.
Freedom dit vrai... tu dois ajouter le '\n' après un std::getline si tu veux le conserver dans la chaine.
Chlab_lak >> ??? std::string peut contenir tout les caractères. Même plusieurs '\0' ou pas du tout.
<EDIT>Tu utilise Visual alors regarde dans ton image et il y a une petite loupe dans le menu contextuel qui affiche la valeur de ta chaine. Clique dessus!</EDIT>
Regardes sur Wikipédia : pleins d'infos.
Sinon relis bien le post de Nanoc (merci Nanoc grâce à toi j'ai compris le BrainFuck, avant je connaissais ce langage mais je ne comprenais rien ).
Déjà fait au moins 5 fois à chaque fois mais je pédale dans la semoule
En faisant ceci, ca fonctionne. Par contre j'aimerai bien que ca fonctionne avec la technique de chlab_lak, car c'est un peu lourd de multiplier les getline() non ?
Regardes sur Wikipédia : pleins d'infos.
Sinon relis bien le post de Nanoc (merci Nanoc grâce à toi j'ai compris le BrainFuck, avant je connaissais ce langage mais je ne comprenais rien ).
Déjà fait au moins 5 fois à chaque fois mais je pédale dans la semoule
Qu'est-ce que tu ne comprends pas ? (Cet exercice est plus difficile que les autres et c'est voulu. Les exercices de début de mois sont plus simples.)
Phoen, pour mettre tout le texte dans une string, tranfere le fichier dans un buffer (voir faq developpez.com) puis passe le dans une string (avec la méthode .str() sur le buffer)