« Suite de Conway » : différence entre les versions

Contenu supprimé Contenu ajouté
mAucun résumé des modifications
→‎En C++ : C++ remplacé par du C bien plus court
Ligne 92 :
</div>
 
=== En [[C++]] ===
 
Voici un bout de codeprogramme écrit en C++ permettantqui d'afficheraffiche les n premièrespremiers lignestermes de la suite de Conway. L'entier, n estétant lupassé auen ligne de claviercommande :
<div class="exemple">
<source lang="cppc">
#include <iostreamstdio.h>
#include <liststdlib.h>
#include <string.h>
using namespace std;
 
template <typename T>
int main(int argc, char **argv)
inline void echange(T & p1, T & p2)
{
const int nb_terms = argc > 1 ? atoi(argv[1]) : 10;
T tmp;
char s1[256] = "", s2[256] = "1", *start, *stop;
tmp = p1;
 
p1 = p2;
for (int i = 10; i < nnb_terms; ++i) {
p2 = tmp;
strcpy(s1, s2);
}
puts(s1);
s2[0] = 0;
int main()
start = s1;
{
while (*start) {
list <int> int_list;
stop = start + 1;
list <int> int_list_temp;
while (*stop == *start) ++stop;
sprintf(s2, "%s%td%c", s2, stop - start, *start);
list <int> * l = &int_list;
start = stop;
list <int> * ltemp = &int_list_temp;
++iterstop;
}
l->push_back(1);
}
return 0;
list <int>::iterator iter;
}
int temp = 0;
int counter = 0;
int n;
cin >> n;
cout << 1 << endl;
for (int i = 1; i < n; ++i)
{
ltemp->clear();
for (iter = l->begin(); iter != l->end(); counter = 0)
{
temp = *iter;
++counter;
++iter;
while ((iter != l->end()) && (*iter == temp))
{
++counter;
++iter;
}
cout << counter << temp;
ltemp->push_back(counter);
ltemp->push_back(temp);
}
cout << endl;
echange(l, ltemp);
}
return 0;
}
</source>
</div>