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  ...  15  16  17  18  19  20  21  ...  26  27  28  29  Suivante
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : Précédente  1  2  3  ...  15  16  17  18  19  20  21  ...  26  27  28  29  Suivante
Hors ligne Chlab_lak # Posté le 16/07/2008 à 21:27:57
Tendou : Royaume de dieu
Avatar
Groupe : Membres
Reprise du dernier message de la page précédente :
Citation : Nanoc
@Chlab_lak : Quand tu rencontre un [, tu vérifies la valeur de l'octet pointé. Si c'est pas 0, tu continues comme si il ne s'était rien passé. Si c'est 0, tu sautes à l'instruction qui suit le ] correspondant. C'est-à-dire qui va à la parenthèse fermante qui est liée à la parenthèse ouvrante.
Pour le ], c'est la même chose en inversant les valeurs.


Merci, j'ai compris, mais j'ai encore des questions:
- Apparamment les octects sont des caractères, donc on peut afficher un warning si le code source tente de faire passer la valeur d'un octet en négatif ?
- De même on peut afficher un warning si le code source tente d'accéder à l'octet -1 ?
- Quand je parle de warning, je pense que l'interpreteur ignore la commande, on peut faire comme ça ?

Merci d'avance, je posterais si j'ai d'autres questions.
 
Hors ligne gymnopaul # Posté le 16/07/2008 à 21:31:26
I could go supersonic !
Avatar
Groupe : Membres
Woow ça l'air d'être de le super-exo-trop-dur-qui-tue o_O !

Ok je sors ->[]

Projet en cours : 2D-3D-Games -> Tutoriels vidéo sur la création de jeux vidéos
Mes connaissances :
Langages : C - C++ (mon préféré ^^ ) - HTML - PHP - SQL
3D : Blender

 
Connecté Bachir ElMagnifico # Posté le 16/07/2008 à 22:07:17
http://info-crea.tuxfamily.org
Avatar
Groupe : Membres
Citation : chab_lack
- Apparamment les octects sont des caractères, donc on peut afficher un warning si le code source tente de faire passer la valeur d'un octet en négatif ?
- De même on peut afficher un warning si le code source tente d'accéder à l'octet -1 ?

Citation : nanoc
Si le pointeur sort du tableau, on le remet à l'autre bout.
il n'ya pas de warning, parceque c'est la "norme du langege" ( :lol: ) qui le dit.

Image utilisateur
cherche des partenaires - page de contact.
mon tuto sur OgreNewt: partie 1, partie 2, partie 3, partie 4
 
Hors ligne Chlab_lak # Posté le 16/07/2008 à 22:19:01
Tendou : Royaume de dieu
Avatar
Groupe : Membres
Hors ligne Nanoc # Posté le 17/07/2008 à 08:45:55
Apprenez à utiliser la STL !!
Avatar
Groupe : Membres
Bachi a raison. Les dépassements à gauche et à droite sont "dans la norme", on retourne à l'autre bout. C'est la même chose pour les octets. 255 + 1 = 0 et ainsi de suite.
Cela veut dire en fait que l'on pourrait supprimer deux instructions. On peut remplacer - par 255 + et < par 29999 > :)
Ce n'est par contre pas très pratique.

Pour le warning, disons que normalement quand il y a une erreur, le programme ne pourra pas continuer ou en tout cas, il ne pourras pas faire ce qu'on attend de lui. Habituellement les interpréteurs (quelque soit le langage) s'arrêtent à la première erreur rencontrée et donnent le numéro de la ligne qui cause l'erreur. On peut imaginer faire la même chose ici, en indiquant quel caractère a causé l'erreur.
de toute façon, vu la "pauvreté" du langage, il n'y a pas 50'000 erreurs différentes possibles.
 
Hors ligne Loumnam # Posté le 17/07/2008 à 11:50:17
#ifdef C++ #define SFML
Groupe : Membres
Petite question sur les [ et les ]:
Peuvent-ils être imbriqués?
Code : Autre
1
2
3
4
5
6
7
[ 
qqchose
[
qqchose
]
qqchose
]

Avec le premier [ qui renvoie au 2e ], et le 2e [ qui renvoie au premier ] ?

A+

Essayez la SFML, une super API multimédia orientée objet, multi-plate-forme, écrite en C++, aussi simple mais beaucoup plus rapide que la SDL!
 
Hors ligne Nanoc # Posté le 17/07/2008 à 11:54:01
Apprenez à utiliser la STL !!
Avatar
Groupe : Membres
oui bien sûr. Regarde le code BF que j'ai proposé.

C'est justement une des difficultés de ce programme.
 
Hors ligne Spaz # Posté le 17/07/2008 à 16:08:47
Groupe : Membres
Question, c'est fait exprès le coup du '255' ? (et pas 256) je viens de perdre 30 minutes avant de comprendre qu'il fallait quand même vérifier à chaque fois qu'on ajoute ou soustrait :-° (edit: non, petite arreur dans mon code :lol: )

Sinon, on peut faire quand même avec des classes, si on préfère ?
Édité le 17/07/2008 à 16:21:06 par Spaz
Connecté Bachir ElMagnifico # Posté le 17/07/2008 à 16:15:46
http://info-crea.tuxfamily.org
Avatar
Groupe : Membres
parce que meme la case 0 ça compte :)

Image utilisateur
cherche des partenaires - page de contact.
mon tuto sur OgreNewt: partie 1, partie 2, partie 3, partie 4
 
Hors ligne Nanoc # Posté le 17/07/2008 à 16:19:03
Apprenez à utiliser la STL !!
Avatar
Groupe : Membres
dans un char, tu peux mettre que 0 à 255 (=2^8-1).
 
Hors ligne Spaz # Posté le 17/07/2008 à 16:22:17
Groupe : Membres
Oui, je viens de voir, en fait ca venait d'une erreur dans ma classe qui gere plusieurs - d'un coup :lol:

ma 2ème question tient toujours, ca gêne si on fait des classes ?
Hors ligne Chlab_lak # Posté le 17/07/2008 à 16:25:13
Tendou : Royaume de dieu
Avatar
Groupe : Membres
Hors ligne Nanoc # Posté le 17/07/2008 à 18:05:55
Apprenez à utiliser la STL !!
Avatar
Groupe : Membres
Hors ligne Reponse_Exercices # Posté le 17/07/2008 à 18:27:02
Groupe : Membres
Délestage
Hors ligne Nanoc # Posté le 17/07/2008 à 18:30:49
Apprenez à utiliser la STL !!
Avatar
Groupe : Membres

Solution du deuxième exercice du mois de juin 2008



Bonjour tout le monde ! Il est temps que je dévoile une solution pour l'exercice du mois de juin . Vous avez été 4 à m'envoyer une solution. Ce qui est moins que d'habitude, mais l'exercice était plus corsé.
Toutes les solutions fonctionnaient correctement, mais étaient très longues (plus de 150 lignes ajoutées) alors qu'en réalité très peu étaient nécessaire.

Partie recherche d'information



Dans un premier temps, il fallait se renseigner un peu sur l'opérateur virgule. La chose importante à remarquer est que l'opérateur virgule est celui avec la préséance la plus faible. L'expression :

Code : C++
1
tableau = 2,3,4,5;


est donc lu par le compilateur comme :

Code : C++
1
(((tableau = 2),3),4),5;


Il faudra donc utiliser deux choses différentes. L'opérateur = renverra un objet "Remplisseur" à qui on aura surchargé l'opérateur virgule.

Programmation



Ecrivons donc cet opérateur =. Rien de plus simple. Il doir mettre l'entier reçu dans la première case (si elle existe) et renvoyer un "Remplisseur".

Code : C++
1
2
3
4
5
Remplisseur operator=(int x)  //On prend le premier entier après la virgule
    {
        at(0) = x;                //On le met dans la premiere case
        return Remplisseur(*this,1);  //Et on initialise un remplisseur a partir de la deuxieme case
    }


Vous remarquerez qu'on utilise at() comme ça on a pas besoin de gérer sois-même le cas où le tableau est vide. On laisse ça au vector qui lançera une exception le cas échéant.

Regardons de plus près le remplisseur.

Il doit écrire dans les cases du tableau. Il faut donc le lui donner à la construction. (D' où le *this dans le code). Il doit également connaître la position à partir de laquelle il doit écrire dans le tableau (vous verrez pourquoi plus loin).

On a donc qqch comme :

Code : C++
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
class Remplisseur
{
public:
    Remplisseur(vector<int>& vec,unsigned int pos)
            : m_ref(vec)  //On initalise la reference
    {
        m_position = pos;    //Et on enregistre la position
    }

private:
    vector<int>& m_ref;
    static size_t m_position;
};


Notez la référence sur le tableau pour éviter la copie et le static qui permet de partager la position entre toutes les instances qu'il faut d'ailleur inialiser en-dehors de la classe. (le static n'est pas nécessaire pour le niveau 1)

Code : C++
1
size_t Remplisseur::m_position=0;


Quand on a ce code :

Code : C++
1
(((tableau = 2),3),4),5;


Il devient après l'exécution de l'opérateur = :

Code : C++
1
(((Remplisseur,3),4),5;


Il faut donc surcharger l'opérateur virgule du Remplisseur pour ajouter le nombre suivant. Et pour réutiliser le même code, on va le faire renvoyer un nouveau remplisseur avec la position suivante

Code : C++
1
2
3
4
5
Remplisseur operator,(int x)     //On prend l'entier après la virgule
    {
        m_ref.at(m_position)=x;                 //On le met à la position qu'il faut dans le Tableau
        return Remplisseur(m_ref,m_position+1); //Et on cree un nouveau Remplisseur qui s'occupera de la case suivante
    }


Remarquez à nouveau le at() pour laisser la gestion de l'exception au vector pour le cas où l'utilisateur veut mettre trop d'éléments dans le vector.

Et voilà, c'est tout pour le niveau 1.

Niveau 2


Pour aller plus loin, il fallait gérer les cas où on affecte un seul chiffre à tout le tableau, ou le cas où il n'y a pas assez d'éléments.

Pour faire cela, il fallait penser que les objets Remplisseurs meurent (sont détruits) à la fin de la ligne. On pourrait donc tester dans le destructeur combien vaut m_position. Afin de savoir si il y a eu assez de virgules. Ce qui donne simplement :

Code : C++
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
~Remplisseur()
    {
        if (m_position==1) //Cas ou on fait l'affectation tab=1;
        {
            m_ref.assign(m_ref.size(),m_ref.at(0));
            m_position=0;
        }
        else if(m_position!=m_ref.size()) //Cas si il y a pas assez de virgules.
        {
            m_position=0;
            throw std::out_of_range("Tableau:: Too much or not enough arguments after comma");
        }
    }


Si il y a eu qu'un seul Remplisseur de créé, m_position vaut 1 et donc on est dans le cas où on remplit tout le tableau avec une seule valeur. On utilie assign de vector pour le faire.
Si m_position est différent de la taille du tableau, c'est qu'il y a pas eu assez d'appel. On lance donc une exception (standard).
Il faut pas oublier de remettre m_position à 0.

Le code complet est donc:
Secret (cliquez pour afficher)
Code : C++
 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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <vector>
#include <iostream>
#include <stdexcept>
using namespace std;

class Remplisseur
{
public:
    Remplisseur(vector<int>& vec,unsigned int pos)
            : m_ref(vec)  //On initalise la reference
    {
        m_position = pos;    //Et on enregistre la position
    }

    Remplisseur operator,(int x)     //On prend l'entier après la virgule
    {
        m_ref.at(m_position)=x;                 //On le met à la position qu'il faut dans le Tableau
        return Remplisseur(m_ref,m_position+1); //Et on cree un nouveau Remplisseur qui s'occupera de la case suivante
    }

    ~Remplisseur()
    {
        if (m_position==1)
        {
            m_ref.assign(m_ref.size(),m_ref.at(0));
            m_position=0;
        }
        else if(m_position!=m_ref.size())
        {            
            m_position=0;
            throw std::out_of_range("Tableau:: Too much or not enough arguments after comma");
        }
    }

private:
    vector<int>& m_ref;
    static size_t m_position;
};

size_t Remplisseur::m_position=0;

class Tableau: public vector<int>
{
public:
    Tableau(unsigned int i=0)    //Construit un tableau de longueur i
            :vector<int>(i,0)
    {}

    Remplisseur operator=(int x)  //On prend le premier entier après la virgule
    {
        at(0) = x;                //On le met dans la premiere case
        return Remplisseur(*this,1);  //Et on initialise un remplisseur a partir de la deuxieme case
    }

};

ostream& operator<<(ostream& flux,const Tableau& tab)  //Affiche le contenu du tableau
{
    if (!tab.empty())
    {
        for (unsigned int i(0);i<tab.size()-1;++i)
            flux << tab[i] << ",";          //On separe les elements par des virgules
        flux << tab[tab.size()-1];
    }
    return flux;
}

int main()
{
    Tableau tab(10);

    tab=0,1,2,3,4,5,6,7,8,9;

    cout << tab << endl;

    return 0;
}


Niveau 3



Le code de niveau 3 ajoute juste des templates là où il faut :
Secret (cliquez pour afficher)

Code : C++
 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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include <vector>
#include <iostream>
using namespace std;

template<typename T>
class Remplisseur
{
public:
    Remplisseur(vector<T>& vec,unsigned int pos)  //Initialise juste les attributs
            : ref(vec)
    {
        m_pos = pos;
    }

    Remplisseur operator,(const T& x)     //On prend l'entier après la virgule
    {
        ref.at(m_pos)=x;               //On le met à la position qu'il faut dans le Tableau
        return Remplisseur(ref,m_pos+1); //Et on cree un nouveau Remplisseur qui s'occupera de la case suivante
    }

    ~Remplisseur()
    {
        if (m_pos==1)
        {
            ref.assign(ref.size(),ref.at(0));
            m_pos=0;
        }
        else if(m_position!=m_ref.size())
        {
            m_position=0;
            throw std::out_of_range("Tableau:: Too much or not enough arguments after comma");
        }

    }

private:
    vector<T>& ref;
    static size_t m_pos;
};

template<typename T>
size_t Remplisseur<T>::m_pos=0;

template<typename T>
class Tableau: public vector<T>
{
public:
    Tableau(unsigned int i=0)    //Construit un tableau de longueur i
            :vector<T>(i)
    {}

    Remplisseur<T> operator=(int x)  //On prend le premier entier après la virgule
    {
        vector<T>::at(0) = x;            //On le met dans la premiere case
        return Remplisseur<T>(*this,1);  //Et on initialise un remplisseur a partir de la deuxieme case
    }

};

template<typename T>
ostream& operator<<(ostream& flux,const Tableau<T>& tab)  //Affiche le contenu du tableau
{
    if (!tab.empty())  //Si il est non-vide
    {
        for (unsigned int i(0);i<tab.size()-1;++i)
            flux << tab[i] << ",";          //On separe les elements par des virgules
        flux << tab[tab.size()-1];
    }
    return flux;
}


int main()
{
    Tableau<int> tab(10);

    tab=2;

    cout << tab << endl;

    return 0;
}


Édité le 17/07/2008 à 19:00:18 par Nanoc
 
Hors ligne HunLyxxod # Posté le 17/07/2008 à 21:19:31
Groupe : Membres
Avoir, en mode Release, une trentaine de tests d'effectués pour l'assignation de seulement 10 éléments, ça me semble excessif, surtout quand on sait très bien qu'ils seront tous faux.
De plus, le membre static est une mauvaise idée: qu'est ce qui se passe si deux threads essayent d'initialiser un tableau en même temps?
Il y a d'autres détails qui serait améliorables (copie d'objet inutile par exemple) mais qui ne sont pas vraiment génant ainsi.
Hors ligne lmghs # Posté le 17/07/2008 à 21:41:58
Groupe : Membres
Pourquoi tu t'embêtes avec la position? Il suffit d'un appel à push_back.

Secret (cliquez pour afficher)
Version vite pondue, et perfectible.
Code : C++
 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
30
31
32
33
#include <vector>
template <typename Container>
struct ComaInserter
{
    typedef typename Container::value_type value_type;

    ComaInserter(Container & container) : m_container(container) {}

    ComaInserter const& operator,(value_type const& v) const {
	m_container . push_back(v);
	return *this;
    }
private:
    Container & m_container;
};

template <typename Container>
ComaInserter<Container> operator+=(Container & container, typename Container::value_type const& v)
{
    return ComaInserter<Container>(container), v;
}

#include <iostream>
#include <algorithm>
#include <iterator>

int main (int argc, char **argv)
{
    std::vector <int> v;
    v += 1, 2, 45;

    std::copy(v.begin(),v.end(), std::ostream_iterator<int>(std::cout, ", "));
}

 
Hors ligne gymnopaul # Posté le 17/07/2008 à 21:45:50
I could go supersonic !
Avatar
Groupe : Membres
Citation : lmghs
Pourquoi tu t'embêtes avec la position? Il suffit d'un appel à push_back.

Secret (cliquez pour afficher)
Version vite pondue, et perfectible.
Code : C++
 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
30
31
32
33
#include <vector>
template <typename Container>
struct ComaInserter
{
    typedef typename Container::value_type value_type;

    ComaInserter(Container & container) : m_container(container) {}

    ComaInserter const& operator,(value_type const& v) const {
	m_container . push_back(v);
	return *this;
    }
private:
    Container & m_container;
};

template <typename Container>
ComaInserter<Container> operator+=(Container & container, typename Container::value_type const& v)
{
    return ComaInserter<Container>(container), v;
}

#include <iostream>
#include <algorithm>
#include <iterator>

int main (int argc, char **argv)
{
    std::vector <int> v;
    v += 1, 2, 45;

    std::copy(v.begin(),v.end(), std::ostream_iterator<int>(std::cout, ", "));
}


C'est ce que j'avais d'abord essayé de faire :) , et ça avait tout à fait marché.

Projet en cours : 2D-3D-Games -> Tutoriels vidéo sur la création de jeux vidéos
Mes connaissances :
Langages : C - C++ (mon préféré ^^ ) - HTML - PHP - SQL
3D : Blender

 
Hors ligne Chlab_lak # Posté le 17/07/2008 à 22:48:26
Tendou : Royaume de dieu
Avatar
Groupe : Membres
Hors ligne nono212 # Posté le 17/07/2008 à 22:55:14
Euh..."a" ?
Avatar
Groupe : Membres
Citation : Chlab_lak
Citation : Spaz
ca gêne si on fait des classes ?


Moi j'ai 5 classes différentes (4 si on compte qu'une devrait être imbriquée).
Je divise chaque tâche pour permettre un maximum d'amélioration et une facilité dans la maintenance.


Ca risque pas d'alourdir le programme ?

Image utilisateur
 
Connecté Bachir ElMagnifico # Posté le 17/07/2008 à 23:01:08
http://info-crea.tuxfamily.org
Avatar
Groupe : Membres
pas autant que ça finalement
Édité le 17/07/2008 à 23:01:40 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 nono212 # Posté le 17/07/2008 à 23:04:22
Euh..."a" ?
Avatar
Groupe : Membres
C'est vrai qe ça améliore le côté pratique...donc bon :D

Image utilisateur
 
Hors ligne Nanoc # Posté le 18/07/2008 à 09:18:34
Apprenez à utiliser la STL !!
Avatar
Groupe : Membres
@Hunlyxxod: Pour les test en effet. Mais bon ce n'est pas un mode de remplissage de tableau très efficace et surtout difficilement utilisable dans un algorithme. Je vois plutôt cela comme un moyen d'initialiser le tableau pour un humain.
Pour le static, en effet ca gêne pour les threads, mais dans ce cas, on peut l'enlever et ajouter un paramètre aux fonctions. Je voulais mettre une fois un static, histoire d'avoir un cas où c'est utilisable.
Pour les copies, je sais pas où tu en vois. A part des copies d'int.

@lmghs: Oui, mais ça ne correspond pas à l'énoncé. Le but était de remplir un tableau déjà existant et pas d'ajouter des cases à la fin.
De plus pour correspondre au "niveau 2", il fallait qu'une expression comme :
Code : C++
1
tab = 1,2;

sur un tableu de 10 cases lève une exception (ou signale une erreur). Il fallait donc un moyen de compter le nombre d'appel à l'opérateur virgule.

Au sujet des classes: C'est bien de séparer les concepts, mais je suis quand même d'avis que pour ces exercices plus de 1 ou 2 classes est souvent exagéré. Il n'y a pas beaucoup de concepts vraiment séparés à représenter. Avoir plusieurs fonctions est par contre tout à fait normal.

@nono212: Ca n'alourdit rien au moment de la compilation (pour autant que le code soit correct) et donc au niveau du programme final.
 
Hors ligne Freedom # Posté le 18/07/2008 à 13:04:38
apprenti
Groupe : Membres
Citation : Chlab_lak
Citation : Spaz
ca gêne si on fait des classes ?


Moi j'ai 5 classes différentes (4 si on compte qu'une devrait être imbriquée).
Je divise chaque tâche pour permettre un maximum d'amélioration et une facilité dans la maintenance.


Perso pour BF j'ai 110 lignes (commentées et présentées correctement), alors séparer 110 lignes en plusieurs classes je suis pas sur que ce soit plus lisible, surtout si tu met une classe par fichier !

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

YAGNI

Architecture logicielle & Développement
 
Hors ligne lmghs # Posté le 18/07/2008 à 14:33:17
Groupe : Membres
Citation : Nanoc
@lmghs: Oui, mais ça ne correspond pas à l'énoncé. Le but était de remplir un tableau déjà existant et pas d'ajouter des cases à la fin.
De plus pour correspondre au "niveau 2", il fallait qu'une expression comme :
Code : C++
1
tab = 1,2;

sur un tableau de 10 cases lève une exception (ou signale une erreur). Il fallait donc un moyen de compter le nombre d'appel à l'opérateur virgule.

OK. J'avais zappé ce détail dans les énoncés.
C'est quand même contre nature. Une affectation devrait ignorer l'ancien état pour en définir un nouveau. (sauf contraintes particulières comme un membre référence ou constant qui feront refuser l'affectation). Surtout avec un vecteur qui est redimensionnable.
 
Hors ligne Tealc13 # Posté le 19/07/2008 à 23:20:31
Avatar
Groupe : Membres
Et hop ! Interpréteur Brainfuck terminé.

Par contre le code inconnu est tout simplement énorme !
Et pourtant si petit (172 caractères en enlevant les espaces qui servent à rien).

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 Chlab_lak # Posté le 20/07/2008 à 17:38:27
Tendou : Royaume de dieu
Avatar
Groupe : Membres
Hors ligne Tealc13 # Posté le 20/07/2008 à 18:02:22
Avatar
Groupe : Membres
Je pense pas qu'il s'arrête. J'ai pas étudié le code mais je l'ai fait tourner jusqu'à des nombres de 450 chiffres !!!

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 Nanoc # Posté le 20/07/2008 à 18:23:19
Apprenez à utiliser la STL !!
Avatar
Groupe : Membres
Il part en boucle infinie. C'est correct. (En tout cas sur cet aspect)
 
Hors ligne Chlab_lak # Posté le 20/07/2008 à 18:51:02
Tendou : Royaume de dieu
Avatar
Groupe : Membres
Hors ligne Tealc13 # Posté le 20/07/2008 à 20:15:45
Avatar
Groupe : Membres
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
 

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 339 Zéros connectés | Requêtes SQL 7 requêtes | Temps de génération de la page : Total (SQL) 0.0787s (0.0517s)