Petit problème sur un programme en C
Manu1400
-
Herr Dr von Apfelstrudel Messages postés 198 Date d'inscription Statut Membre Dernière intervention -
Herr Dr von Apfelstrudel Messages postés 198 Date d'inscription Statut Membre Dernière intervention -
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
- Mettre en veille un programme - Guide
- Programme demarrage windows - Guide
- Desinstaller un programme sur windows - Guide
- Petit 2 ✓ - Forum Bureautique
- Forcer la fermeture d'un programme - Guide
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; }