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 83
| #include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* conway(char*,char*);
void main(void)
{
int i,terme;
char chaine1[999999] = {'1','\0'};
char chaine2[999999] = {'\0'};
printf("\t************************************************************\n");
printf("\t*** Suite 'Look and Say' de J.H.Conway, Par Nicolas xxxx ***\n");
printf("\t************************************************************\n");
printf("\n(*) Dans cette suite, un terme se determine en annoncant les chiffres formant \nle terme precedent:\n\n");
printf("X00=1\n");
for(i = 1; i <= 5; i++)
{
strcpy(chaine1,conway(chaine1, chaine2));
printf("X%02i=",i);
printf("%s\n",chaine1);
}
while (terme > 99)
{
printf("\n(**) Veuillez choisir le terme dont vous voulez la solution (inferieur a 100):\n--> ");
scanf("%i",&terme);
if (terme < 6)
{
while (terme < 6)
{
printf("Entrez un nombre superieur a 5, vous avez deja les 5 premier termes");
scanf("%i",&terme);
}
}
}
for(i = 6; i <= terme; i++)
{
strcpy(chaine1,conway(chaine1,chaine2));
printf("\nX%02i=",i);
printf("%s\n",chaine1);
}
system("pause");
}
//FONCTIONS
char* conway(char* chaine1, char* chaine2)
{
*chaine2 = '\0';
int compteur, position = 0, c,t = 0;
c = chaine1[0];
while (chaine1[position] != '\0')
{
compteur = '0';
while (chaine1[position] == c)
{
compteur++;
position++;
}
chaine2[t] = compteur;
t++;
chaine2[t] = c;
t++;
if (chaine1[position] != '\0') c = chaine1[position];
}
return (chaine2);
} |
Partager