Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Programmation > Langage C++ > [Exercices] Venez vous entraîner ! > Lecture du sujet

[Exercices] Venez vous entraîner !

Un nouvel exercice chaque mois

Vous devez être inscrit pour pouvoir poster des messages

Page : Précédente  1  2  3  ...  16  17  18  19  20  21  22  ...  26  27  28  29  Suivante
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : Précédente  1  2  3  ...  16  17  18  19  20  21  22  ...  26  27  28  29  Suivante
Hors ligne Tealc13 # Posté le 20/07/2008 à 20:15:45
Avatar
Groupe : Membres
Reprise du dernier message de la page précédente :
Citation : Nanoc
Il part en boucle infinie. C'est correct. (En tout cas sur cet aspect)

Pourquoi, on est sensé trouver une erreur ?
Pour moi il fonctionne très bien.

OS : Ubuntu / Windows XP
IDE : Code::Blocks 8.02
Editeur : Gedit / Notepad++ 5.0.3 / celui qui me tombe sous la main
Navigateur : Firefox 3.0.3
 
Hors ligne Freedom # Posté le 20/07/2008 à 20:27:46
apprenti
Groupe : Membres
Citation : Tealc13
Citation : Nanoc
Il part en boucle infinie. C'est correct. (En tout cas sur cet aspect)

Pourquoi, on est sensé trouver une erreur ?
Pour moi il fonctionne très bien.


Nanoc dit "sur cet apsect" parce que ton interpreteur peut bien partir en boucle infinie et ton code être incorrect :)

Citation : The Who
We're not gonna take it
Never did and never will

YAGNI

Architecture logicielle & Développement
 
Hors ligne Nanoc # Posté le 20/07/2008 à 21:01:02
Apprenez à utiliser la STL !!
Avatar
Groupe : Membres
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)
 
Hors ligne yudassen # Posté le 20/07/2008 à 21:38:46
Graphiste et programeur
Avatar
Groupe : Membres
J'aime bien l'exercice, mais le langage est affreux a souhaits :D .
Je pense y partitciciper (au fait, pour le bonus, on pourrait le faire en Ook non ;) )

Grand Projet Discworld :
Executeur => ||||||||||
Construceur=> ||||||||||


La lumiere va plus vite que le son, c'est pourquoi certaines personnes paraissent brillantes jusqu'a ce qu'elles commenceent a parler

N'est-ce pas yudassen :p
 
Hors ligne Nanoc # Posté le 20/07/2008 à 21:55:37
Apprenez à utiliser la STL !!
Avatar
Groupe : Membres
Bienvenue !

Pour le OOk, pourquoi pas, le principe est globalement le même.
 
Hors ligne Dr-Jackal # Posté le 20/07/2008 à 21:59:16
Avatar
Groupe : Membres
Interpréteur BF envoyé.
Sympa ce langage, il porte bien son nom surtout quand on doit coder des programmes "complexes" ^^ .
Hors ligne Nanoc # Posté le 21/07/2008 à 09:01:48
Apprenez à utiliser la STL !!
Avatar
Groupe : Membres
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 !
 
Hors ligne Gollum # Posté le 21/07/2008 à 09:37:26
Avatar
Groupe : Membres
Salut,
Pour ma part j'ai strictement rien compris au brainfuck o_O
Je ne vois pas comment ça marche :euh:

Cela aurait pu être un entrainement assez sympas de faire cela mais rien compris au BF alors ça va être chaud de coder un interpreteur BF :p

tcho
Édité le 21/07/2008 à 09:47:15 par Gollum
 
Hors ligne nono212 # Posté le 21/07/2008 à 14:27:25
Euh..."a" ?
Avatar
Groupe : Membres
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 :p ).

Image utilisateur
 
Hors ligne Phoen # Posté le 21/07/2008 à 15:44:08
Avatar
Groupe : Membres
Bonjour,

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 ?

Merci ;)
Hors ligne Nanoc # Posté le 21/07/2008 à 15:58:20
Apprenez à utiliser la STL !!
Avatar
Groupe : Membres
A quoi est-ce que tu fais référence ?
 
Hors ligne Phoen # Posté le 21/07/2008 à 16:09:44
Avatar
Groupe : Membres
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.

Merci
Édité le 21/07/2008 à 16:26:24 par Phoen
Hors ligne Nanoc # Posté le 21/07/2008 à 16:31:49
Apprenez à utiliser la STL !!
Avatar
Groupe : Membres
Si tu as trouvé une solution c'est parfait.

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.
 
Hors ligne Phoen # Posté le 21/07/2008 à 16:37:52
Avatar
Groupe : Membres
tu es sur que ca insert bien les "\n" ?

Car si je demande à mon programme d'afficher le contenu de la chaine qu'il a lu ou bien de répérer les \n, ca ne fonctionne pas !

EDIT : tu peux m'expliquer ce problème de caractères, si le message n'a rien à faire ici, dis le moi je le delete

Image utilisateur
Édité le 21/07/2008 à 16:44:04 par Phoen
Hors ligne Nanoc # Posté le 21/07/2008 à 16:52:22
Apprenez à utiliser la STL !!
Avatar
Groupe : Membres
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.

Ca joue ?
 
Hors ligne Chlab_lak # Posté le 21/07/2008 à 17:07:41
Tendou : Royaume de dieu
Avatar
Groupe : Membres
Hors ligne Phoen # Posté le 21/07/2008 à 17:19:02
Avatar
Groupe : Membres
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 :
Code : Autre
1
if(caractere == 'n' && ancienCaractere == '\\')


ne repère pas dans mon fichier de base les retour à la ligne :(

J'avoue être un peu perdue là.
Hors ligne Chlab_lak # Posté le 21/07/2008 à 17:21:00
Tendou : Royaume de dieu
Avatar
Groupe : Membres
Hors ligne MatteX # Posté le 21/07/2008 à 17:26:06
The cake is a lie!
Avatar
Groupe : Membres
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.

liens utiles: FAQ C++ (developpez.com) | GotAPI.com | H-Deb
Mon futur ex-blog | Logique : http://thedailywtf.com/Articles/What_Is_Truth_0x3f_.aspx
Propriétaire d'un Dell Inspiron 1720, Core 2 Duo 2.4Ghz, 3Go DDR2, 8600M GT 256Mo. Avec Blu-Ray!
 
Hors ligne Phoen # Posté le 21/07/2008 à 17:31:32
Avatar
Groupe : Membres
même avec

Code : C++
1
if(caractere == '\n')

il n'entre jamais dans la condition.

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 ? :)
Édité le 21/07/2008 à 17:32:58 par Phoen
Hors ligne Chlab_lak # Posté le 21/07/2008 à 17:32:03
Tendou : Royaume de dieu
Avatar
Groupe : Membres
sinon il y a std::istream::get (mais je sais plus si ca prend les caratères blancs, il me semble que si)
Code : C++
1
2
3
4
5
char C = 0;
while(File.get(C))
{
   //...
}


ou attaque directement le std::streambuf

EDIT:
<delete>

sinon pour la lecture du fichier il y a plus simple que de tout le temps faire des std::getline()
Code : C++
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#include <fstream>
#include <string>
#include <iterator>
#include <algorithm>

std::ifstream Ifs("file.txt");

std::istreambuf_iterator<char> Begin(Ifs);
std::istreambuf_iterator<char> End;

std::string String;

std::copy(Begin, End, std::back_inserter(String));
Édité le 21/07/2008 à 18:15:10 par Chlab_lak
 
Hors ligne Freedom # Posté le 21/07/2008 à 17:38:54
apprenti
Groupe : Membres
Citation : Phoen
même avec

Code : C++
1
if(caractere == '\n')

il n'entre jamais dans la condition.

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.

Citation : The Who
We're not gonna take it
Never did and never will

YAGNI

Architecture logicielle & Développement
 
Hors ligne MatteX # Posté le 21/07/2008 à 17:44:37
The cake is a lie!
Avatar
Groupe : Membres
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>
Édité le 21/07/2008 à 17:46:09 par MatteX

liens utiles: FAQ C++ (developpez.com) | GotAPI.com | H-Deb
Mon futur ex-blog | Logique : http://thedailywtf.com/Articles/What_Is_Truth_0x3f_.aspx
Propriétaire d'un Dell Inspiron 1720, Core 2 Duo 2.4Ghz, 3Go DDR2, 8600M GT 256Mo. Avec Blu-Ray!
 
Hors ligne Gollum # Posté le 21/07/2008 à 17:53:24
Avatar
Groupe : Membres
Citation : nono212
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 :p ).

Déjà fait au moins 5 fois à chaque fois mais je pédale dans la semoule o_O
 
Hors ligne Phoen # Posté le 21/07/2008 à 17:55:23
Avatar
Groupe : Membres
En utilisant la méthode de chlab_lak, le tableau Array contient tout le texte mais toujours pas les \n :(


Edit:

Code : C++
1
2
3
4
while(getline(fichier, ligne))
{
     texte+=ligne+'\n';
}


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 ?
Édité le 21/07/2008 à 18:02:51 par Phoen
Hors ligne MatteX # Posté le 21/07/2008 à 18:03:48
The cake is a lie!
Avatar
Groupe : Membres
Bon j'ai répondu ici, j'ai oubliés dans quel sujet on était. Ça m'arrive trop souvent.

Phoen >> Démarre un nouveau sujet pour répondre à ta question.

Tout le monde : ne répondez plus ici, ça ne sert à rien ce n'est pas le bon sujet !

Suite des discutions sur les exercices (Et pas sur les problèmes rencontrés)


Désolé Nanoc (et tout le monde) de ne pas avoir agit plus tôt.
Édité le 21/07/2008 à 18:05:00 par MatteX

liens utiles: FAQ C++ (developpez.com) | GotAPI.com | H-Deb
Mon futur ex-blog | Logique : http://thedailywtf.com/Articles/What_Is_Truth_0x3f_.aspx
Propriétaire d'un Dell Inspiron 1720, Core 2 Duo 2.4Ghz, 3Go DDR2, 8600M GT 256Mo. Avec Blu-Ray!
 
Hors ligne Chlab_lak # Posté le 21/07/2008 à 18:11:46
Tendou : Royaume de dieu
Avatar
Groupe : Membres
Hors ligne Nanoc # Posté le 21/07/2008 à 18:27:24
Apprenez à utiliser la STL !!
Avatar
Groupe : Membres
Citation : Gollum
Citation : nono212
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 :p ).

Déjà fait au moins 5 fois à chaque fois mais je pédale dans la semoule o_O


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.)
 
Hors ligne Bachir ElMagnifico # Posté le 21/07/2008 à 18:53:08
http://info-crea.tuxfamily.org
Avatar
Groupe : Membres
pour ceux que ça interrse: http://www.iwriteiam.nl/Ha_bf_online.html , un interpreteur du BF en JS
Édité le 21/07/2008 à 19:14:36 par Bachir ElMagnifico

Image utilisateur
cherche des partenaires - page de contact.
mon tuto sur OgreNewt: partie 1, partie 2, partie 3, partie 4
 
Hors ligne Freedom # Posté le 21/07/2008 à 21:39:37
apprenti
Groupe : Membres
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)

Citation : The Who
We're not gonna take it
Never did and never will

YAGNI

Architecture logicielle & Développement
 
Hors ligne Chlab_lak # Posté le 21/07/2008 à 22:19:27
Tendou : Royaume de dieu
Avatar
Groupe : Membres

Retour au forum "Langage C++" ou à la liste des forums

Vous devez être inscrit pour pouvoir poster des messages

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 198 Zéros connectés | Requêtes SQL 9 requêtes | Temps de génération de la page : Total (SQL) 0.2028s (0.1843s)