Probleme de code en C
Résolu/Fermé
omaflak
Messages postés
26
Date d'inscription
jeudi 28 juin 2012
Statut
Membre
Dernière intervention
4 mars 2013
-
Modifié par omaflak le 3/07/2012 à 15:42
omaflak Messages postés 26 Date d'inscription jeudi 28 juin 2012 Statut Membre Dernière intervention 4 mars 2013 - 6 juil. 2012 à 15:59
omaflak Messages postés 26 Date d'inscription jeudi 28 juin 2012 Statut Membre Dernière intervention 4 mars 2013 - 6 juil. 2012 à 15:59
A voir également:
- Probleme de code en C
- Code ascii - Guide
- Code de déverrouillage oublié - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
- Code blocks - Télécharger - Langages
9 réponses
Submin
Messages postés
382
Date d'inscription
vendredi 2 mars 2012
Statut
Membre
Dernière intervention
1 avril 2016
226
Modifié par Submin le 3/07/2012 à 16:09
Modifié par Submin le 3/07/2012 à 16:09
Bonjour,
C'est cette parti qui plante,
La variable nombre est un entier, tant que nombre n'est pas égal a 10 il n'arrivera pas a avoir nombre = 1
Tu divise un entier par 10.... Le résultat sera donc un entier
nombre=nombre/10;
Exemple, 10 / 3 = 3 pour le langage C
et 3/10 = 0 pour le langage C
essai d'utiliser des floats à la place et je pense que tu n'aura plus de problème
Source : https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c/14337-une-bete-de-calcul#ss_part_1
Essai cette méthode
J'espère que ça marchera mais normalement oui....
C'est cette parti qui plante,
La variable nombre est un entier, tant que nombre n'est pas égal a 10 il n'arrivera pas a avoir nombre = 1
Tu divise un entier par 10.... Le résultat sera donc un entier
nombre=nombre/10;
Exemple, 10 / 3 = 3 pour le langage C
et 3/10 = 0 pour le langage C
essai d'utiliser des floats à la place et je pense que tu n'aura plus de problème
Source : https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c/14337-une-bete-de-calcul#ss_part_1
Essai cette méthode
int len(float nombre) { int i=1; while (nombre>=10) { nombre=nombre/10; i++; } return i; }
J'espère que ça marchera mais normalement oui....
Utilisateur anonyme
3 juil. 2012 à 16:06
3 juil. 2012 à 16:06
Salut ;-),
Utilise les balises <code*> ton code </code*>, ce sera plus lisible :-)
(enlève les étoiles pour ton code, c'était pour ne pas que la balise s'applique)
nombre n'est pas défini, il ne vaut donc rien.
Utilise les balises <code*> ton code </code*>, ce sera plus lisible :-)
(enlève les étoiles pour ton code, c'était pour ne pas que la balise s'applique)
nombre n'est pas défini, il ne vaut donc rien.
Submin
Messages postés
382
Date d'inscription
vendredi 2 mars 2012
Statut
Membre
Dernière intervention
1 avril 2016
226
Modifié par Submin le 3/07/2012 à 16:11
Modifié par Submin le 3/07/2012 à 16:11
la variable est définie dans la fonction,
c'est une fonction nommée "len" avec la variable "nombre" entrée en paramètre comme un entier
Par contre pour les balises de code j'avoue que ça peut être bien de prendre l'habitude ;)
c'est une fonction nommée "len" avec la variable "nombre" entrée en paramètre comme un entier
Par contre pour les balises de code j'avoue que ça peut être bien de prendre l'habitude ;)
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
3 juil. 2012 à 16:14
3 juil. 2012 à 16:14
montre nous comment tu utilises ta fonction, car là je ne vois pas d'erreur.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 845
3 juil. 2012 à 21:04
3 juil. 2012 à 21:04
Bonjour,
Ta fonction est parfaitement correcte.
L'erreur vient d'ailleurs. Probablement de la fonction qui appelle len(...);
Pourrais-tu montrer ton code en entier. Avec les balises code (à droite du bouton souligné).
Ta fonction est parfaitement correcte.
L'erreur vient d'ailleurs. Probablement de la fonction qui appelle len(...);
Pourrais-tu montrer ton code en entier. Avec les balises code (à droite du bouton souligné).
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Kafiristanica
Messages postés
266
Date d'inscription
mardi 12 juin 2012
Statut
Membre
Dernière intervention
27 août 2012
28
Modifié par Kafiristanica le 5/07/2012 à 10:46
Modifié par Kafiristanica le 5/07/2012 à 10:46
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
int nombreChiffres ( int nombre ) { int i = 1; if (nombre < 0) { nombre = -nombre; } while (nombre >= 10) { nombre /= 10; i++; } return i; } int main ( ) { int N; printf("Nombre : "); scanf("%d", &N); printf("Nombre de chiffres de %d : %d\n", N, nombreChiffres(N)); return 0; }
omaflak
Messages postés
26
Date d'inscription
jeudi 28 juin 2012
Statut
Membre
Dernière intervention
4 mars 2013
1
3 juil. 2012 à 16:09
3 juil. 2012 à 16:09
Bonjour, 'Submin merci pour ton aide j'ai fait ce que tu m'as dit mais ca ne marche toujours pas :(
Submin
Messages postés
382
Date d'inscription
vendredi 2 mars 2012
Statut
Membre
Dernière intervention
1 avril 2016
226
Modifié par Submin le 3/07/2012 à 16:13
Modifié par Submin le 3/07/2012 à 16:13
Tu as changé ta variable nombre dans ton main() aussi?
Car sinon ça change rien, ça la considérera toujours comme un entier
Tu fait rentré une variable entier dans un float, du coup le langage C l'utilise toujours comme un entier (a mona vis ton erreur est la)
je vais tout de même vérifier le code chez moi
Car sinon ça change rien, ça la considérera toujours comme un entier
Tu fait rentré une variable entier dans un float, du coup le langage C l'utilise toujours comme un entier (a mona vis ton erreur est la)
je vais tout de même vérifier le code chez moi
omaflak
Messages postés
26
Date d'inscription
jeudi 28 juin 2012
Statut
Membre
Dernière intervention
4 mars 2013
1
Modifié par omaflak le 5/07/2012 à 10:39
Modifié par omaflak le 5/07/2012 à 10:39
Merci a tout ceux qui m'ont envoyer de bon conseil mais la je bloc :( voila mon code en entier :
#include <stdio.h>
#include <stdlib.h>
int len(int nombre);
int main(int argc, char *argv[])
{
int N;
printf("N = ");
scanf("%d", N);
printf("Nombre de Chiffre = %d\n", len(N));
return 0;
}
int len(int nombre)
{
int i=0;
while (nombre>1)
{
nombre=nombre/10;
i++;
}
return i;
}
#include <stdio.h>
#include <stdlib.h>
int len(int nombre);
int main(int argc, char *argv[])
{
int N;
printf("N = ");
scanf("%d", N);
printf("Nombre de Chiffre = %d\n", len(N));
return 0;
}
int len(int nombre)
{
int i=0;
while (nombre>1)
{
nombre=nombre/10;
i++;
}
return i;
}
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 845
5 juil. 2012 à 11:37
5 juil. 2012 à 11:37
Effectivement l'erreur viet de la fonction appelante.
scanf("%d", N);
Il faut mettre &N. Cela doit générer un warning d'ailleurs.
Et tout devrait rentrer dans l'ordre.
scanf("%d", N);
Il faut mettre &N. Cela doit générer un warning d'ailleurs.
Et tout devrait rentrer dans l'ordre.
omaflak
Messages postés
26
Date d'inscription
jeudi 28 juin 2012
Statut
Membre
Dernière intervention
4 mars 2013
1
6 juil. 2012 à 15:59
6 juil. 2012 à 15:59
Effectivement ca a marcher :) Merci beaucoup
omaflak
Messages postés
26
Date d'inscription
jeudi 28 juin 2012
Statut
Membre
Dernière intervention
4 mars 2013
1
Modifié par omaflak le 5/07/2012 à 10:33
Modifié par omaflak le 5/07/2012 à 10:33
Et la fonction me renvoie tout le temps le valeur 10 :(
omaflak
Messages postés
26
Date d'inscription
jeudi 28 juin 2012
Statut
Membre
Dernière intervention
4 mars 2013
1
Modifié par omaflak le 5/07/2012 à 10:37
Modifié par omaflak le 5/07/2012 à 10:37
Je comprend a quoi elle sert cette balise code ? Quand j'appuis dessus ya juste ecrit "code code
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
5 juil. 2012 à 11:56
5 juil. 2012 à 11:56
Sélectionne ton code source dans la fenêtre avant de cliquer dessus.
3 juil. 2012 à 21:02
Certes, sauf qu'il a mis > 1 et non = 1. Du coup, son algorithme fonctionne.