Petit problème sur un programme en C
Manu1400
-
Herr Dr von Apfelstrudel Messages postés 199 Statut Membre -
Herr Dr von Apfelstrudel Messages postés 199 Statut Membre -
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
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:
- Petit problème sur un programme en C
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Comment imprimer une photo en petit ✓ - Forum Photo numérique
- Desinstaller un programme sur windows - Guide
- Petit point vert snap ✓ - Forum Snapchat
1 réponse
Salut,
par exemple:
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;
}