Petit problème sur un programme en C

Fermé
Manu1400 - 13 août 2007 à 20:55
Herr Dr von Apfelstrudel Messages postés 198 Date d'inscription lundi 29 janvier 2007 Statut Membre Dernière intervention 10 février 2010 - 13 août 2007 à 21:50
Bonjour

J'ai fait un programme hyper simple en C pourtant il ne fonctionne pas comme je le veux. J'aimerai savoir pourquoi. Mon programme est fait pour vérifier qu'un nombre n vérifie la conjecture de Syracuse. Ce n'est pas comment vérifier pour un nombre la conjecture qui me pose problème mais c'est que les variable n et ok ne prenne pas les valeurs attendues dès les premieres lignes du programme. Pour ceux qui veulent connaître la conjecture https://fr.wikipedia.org/wiki/Conjecture_de_Syracuse

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(int argc, char *argv[])
{
char ok = 26;
float n;

printf("Quel est l'entier a tester ?\n");
scanf("%d", &n); //%ld ou %d ? (bis)
printf("Taper 1 pour voir les valeurs succesives de n, sinon taper 0\n");
scanf("%d", &ok);
printf("n vaut %ld et ok vaut %ld\n", n, ok);
//Problème AVANT cette ligne !
while (n!=1)
{
if (n==((n/2)*2))
{n=(n/2); //simplification possible

}
else
n=(3*n+1);
if (ok == 1);
printf("%ld", n); //entier
}
printf("valide");

return 0;

}

Merci d'avance

Manu1400
A voir également:

1 réponse

Herr Dr von Apfelstrudel Messages postés 198 Date d'inscription lundi 29 janvier 2007 Statut Membre Dernière intervention 10 février 2010 181
13 août 2007 à 21:50
Salut,

par exemple:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(int argc, char *argv[])
{
	int ok, n;

	printf("Quel est l'entier a tester ? ");
	scanf("%d", &n);
	printf("Taper 1 pour voir les valeurs successives de n, sinon taper 0 ");
	scanf("%d", &ok);
	printf("n vaut %ld et ok vaut %ld\n", n, ok);
	
	while (n!=1)
	{
		//if (n==((n/2)*2)): marche, mais pas très propre
		if( !(n % 2) )
		{
			n=n/2; //simplification possible
		}
		else
			n=3*n+1;
		if (ok == 1);
		printf("%ld\n", n); //entier
	}
	printf("valide");

	return 0;
} 
0