Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

GÉNÉRATEUR DE SUITE DE NOMBRES 1 / 11 / 21 / 1211 / 111221 / 312211 / ETC


Information sur la source

Description

Tout d'abord, commencez par essayer de comprendre comment est fabriquée cette suite de nombres (c'est un jeu tout bête) :
1
11
21
1211
111221
312211
13112221
1113213211
31131211131221
13211311123113112211
...

Si vous connaissez pas, essayez de comprendre en examinant mon petit code c++ qui génère automatiquement cette suite...
 

Source

  • #include <iostream>
  • using namespace std;
  • const int NB = 20; // nombre de lignes à afficher
  • char *suite (char *prec)
  • {
  • char *i = prec;
  • char *suiv = new char[500];
  • char *j = suiv, *ret = suiv;
  • for(int cpt=1; *i!='\0' ;)
  • {
  • for (; *i==*(i+1); i++) cpt++;
  • if (*i != '\0')
  • {
  • *j++ = cpt+'0';
  • *j++ = *i++;
  • cpt=1;
  • }
  • }
  • *j='\0';
  • return ret;
  • }
  • void main()
  • {
  • char *dep="1";
  • for (int i=0; i<20; i++)
  • {
  • cout << dep << "\n\n";
  • dep = suite (dep);
  • }
  • cout << dep << endl;
  • }
#include <iostream>
using namespace std;

const int NB = 20; // nombre de lignes à afficher

char *suite (char *prec)
{
	char *i = prec;
	char *suiv = new char[500];
	char *j = suiv, *ret = suiv;

	for(int cpt=1; *i!='\0' ;)
	{
		for (; *i==*(i+1); i++) cpt++;
		if (*i != '\0')
		{
			*j++ = cpt+'0';
			*j++ = *i++;
			cpt=1;
		}
	}
	*j='\0';
	return ret;
}


void main()
{
	char *dep="1";
	for (int i=0; i<20; i++)
	{
		cout << dep << "\n\n";
		dep = suite (dep);
	}
	cout << dep << endl;
}

Conclusion

Ce code aurait très bien pû être en C, mais je préfère le c++ ;)
 

Commentaires et avis

signaler à un administrateur
Commentaire de dudiolini le 14/05/2004 19:17:34

t'as lu les fourmis toi ;)

signaler à un administrateur
Commentaire de djl le 14/05/2004 20:30:22

et delete tu connais ?

signaler à un administrateur
Commentaire de nicovmd le 14/05/2004 21:38:04

J'ai fait ce code tellement vite fait que j'ai pas mis les delete, c'est vrai...
Je savais pas que c'était dans les fourmis :)

signaler à un administrateur
Commentaire de jockos le 15/05/2004 00:04:04

C'est le triangle de Pascal.. (du nom du grand mathématicien)

signaler à un administrateur
Commentaire de jcalbator le 25/05/2004 17:31:36

Ca n'as rien a voir avec le triangle de pascal qui est, je le rapelle:

1
1  1
1  2  1
1  3  3  1
1  4  6  4  1
1  5  10 10 5  1
...

Avec une petite modif du code pourrais le faire aussi =p

signaler à un administrateur
Commentaire de jockos le 25/05/2004 17:42:12

Ouais désolé... j'ai voulu faire le malin et j'ai parlé un peu trop vite...
;)
Je m'en suis aperçu après avoir posté mon commentaire... :-)

signaler à un administrateur
Commentaire de badoben le 20/11/2006 11:12:23

ben moi en code c++ , j ai fait ainsi:
et il marche pour le nombre d etapes introduites par l utilisateur et le chiffre ontroduit par l utilisateur

#include<iostream>
using namespace std;
int main()
{
    int long v[100];//introduction du 1er vecteur
    int long w[100],n, etapes,longueur,cpt,y,z;
                               //introduction du vecteur de sauvegarde de donee
    cpt=1;// initialisation du compteur
    bool t= true;
    //introduction d une valeur boolleenne qui me servire dans la boucle while
    cout<<"veuillez introduire la taille de la suite initiale"<<endl;
    cin>>n;//introduction de la taille de la suite
    cout<<"veuillez introduire la suite voulue"<<endl;
    for(int i=0; i<n ; i++)//boucle permettant d'introduire le vecteur voulu
    {
            cin>>v[i];
            }
    cout<<endl<<"veuillez introduire le nombre d etapes voulues"<<endl;
    cin>>etapes;//introduction du nombre d 'etapes
    z=n;// z premettra de connaitre la taille du vecteur
    for(int j=0;j<etapes ; j++)
                     //fait tourner le programme le nombre de foi voulu
    {
          y=0;
    //initialisation du y, qui servira a designer la place dan le vecteur w
          for( int i=0; i<z ; i++)
          // fait tourner le progamme sur toute la longeur du vecteur
          {    
                while( t!=false )
                //condition pour verifier si le v[] est egal au v[]suivant
                {          
                   if (v[i]==v[i+1])
                   { cpt ++;
                    // compteur augmente pour la repetition de chaque chiffre
                     i++; }
                   if( v[i]!= v[i+1])
                   {t=false;}    // condition de sortie de la boucle
                                        
                      }
           w[y]=cpt;
           //introduction de la donnee du nomre de repetition du chiffre dan w[]
           w[y+1]=v[i];// introduction de la valeur du chiffre dans w[]
           y=y+2;
             //augmentation du w , permettan d aller plu loin dan le vecteur
           cpt=1;//reinitialisation du compteur
           t=true;//reinitialisation de la valeur booleene
           }
    for(int i=0; i<y ; i++)//permet de remettre toute les donnee de w[]dans v[]
      {
            v[i]=w[i];
          
            }
    z=y;//dit la longeur du vecteur
    }
      
    for(int i=0; i<y ; i++)//afiche les valeur demandee
    {
             cout<<v[i];
            }
            
    system("PAUSE");
}

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,140 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.