Salut,
je suis en train de réaliser des programmes informatiques dans le cadre d´un projet de programmation, mais voilà je bloque sur un programme, ce dernier ne marche pas sans que je sache pourquoi.
En fait mon programme doit calculer une suite (syracuse):
Un+1=Un/2 si Un est pair, sinon Un+1=3Un+1.
En fait les resultats que l´on trouvera à chaque fois sont Un= 4,2,1,4,2,1 etc...
En gros j´aimerai bien que mon programme s´arrête dès que Un a été égal deux fois à 1 (c´est à dire au bout de 4, 2, 1, 4, 2, 1.
Mais le truc c´est que Un à n´importe quel rang est toujours égal à 1, alors qu´il devrait valoir U1=4, U2=2, U3=1.
J´espère que j´ai bien expliqué mon problème, et je remercie déjà ceux qui ont pris la peine de lire mon post, et encore plus ceux qui prendront la peinde de m´aiguiller 
Mon programme est:
- include <stdio.h>
- include <stdlib.h>
int main ()
{
long U, n, cpt;
do
{
printf("Saisir un nombre entier, compris entre 1 et 500:");
fflush(stdin);
scanf("%ld", &U);
}while ((U<1)||(U>500));
n=0;
cpt=0;
do
{
if(U%2==0)
{
U=U/2;
}
else
{
U=3*U+1;
}
if(U=1)
{
n=n+1;
}
printf("\nU au rang %ld", cpt);
printf(" vaut: %ld", U);
cpt=cpt+1;
}
while (n<=2);
system("PAUSE");
return 0 ;
}