IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Identifiez la clé de contrôle d’un nombre entier n


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 11
    Par défaut Identifiez la clé de contrôle d’un nombre entier n
    Bonjour , je sollicite votre aide pour une correction de mon code , car il ne compile pas Merci .

    Identifiez la clé de contrôle d’un nombre entier n. La clé de contrôle sera calculée en ajoutant chaque chiffre de n de manière répétitive et en remplaçant n par la somme calculée de manière répétitive.

    Input : un nombre entier n > 0.
    Output : un nombre entier result. La sortie doit être formattée avec un caractère de retour à la ligne (ou retour-chariot) en fin de ligne (voir le code déjà donné).

    Exemple :
    Pour n = 3429 la somme des chiffres est 18, pour 18 la somme est 9, et 9 est la clé de contrôle de 3429.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.util.Arrays;
    public class Main {
        /* The name of the class has to be Main. */
        public static void main(String[] args) {
            BufferedReader in;
            try {
                in = new BufferedReader(new FileReader(new File(args[0])));
                String line = null;
                int i = 0;
                int result = -1;
                line = in.readLine();
                int n = Integer.valueOf(line);
     
                System.out.println(result);
            }
            catch (Exception e){
                e.printStackTrace();
            }
        }
    }

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Quel est le message d'erreur de compilation ? Le fichier source s'appelle-t-il bien Main.java ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 11
    Par défaut Determiner la clé de contrôle d'un nombre entier n
    bonjour et merci pour votre message , en effet le but de l'exercices est : La clé de contrôle sera calculée en ajoutant chaque chiffre de n de manière répétitive et en remplaçant n par la somme calculée de manière répétitive.

    Input : un nombre entier n > 0.
    Output : un nombre entier result. La sortie doit être formattée avec un caractère de retour à la ligne (ou retour-chariot) en fin de ligne (voir le code déjà donné).

    par Exemple :
    Pour n = 3429 la somme des chiffres est 18, pour 18 la somme est 9, et 9 est la clé de contrôle de 3429

    oui mon fichier source est bien la class Main

    et apres compilation jai les données ci :

    Nom : Capture.PNG
Affichages : 1401
Taille : 5,9 Ko

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Si tu as des données en résultat, c'est que ton programme compile. Alors, pourquoi tu dis :

    Citation Envoyé par doudou1234 Voir le message
    car il ne compile pas
    Après c'est sûr que vu le code que tu nous montres ça ne fait pas ce que l'énoncé demande qu'il fasse, vu que le code en question ne fait que lire un nombre dans un fichier, le convertir en int, et afficher la valeur -1 ! Et cela correspond bien au résultat de test que tu montres dans ton dernier message !

    Qu'attends-tu de nous ? Nous on veut bien t'aider à résoudre les problèmes que tu peux rencontrer lors de l'implémentation du code que tu as à faire. Mais commence par faire quelque chose. A commencer par essayer d'appliquer ce qui est indiqué assez explicitement dans l'énoncé : boucles et tests.

    Après si c'est pour parcourir les chiffres d'un nombre que tu bloques, il y a deux méthodes principales :
    1. faire des divisions successives par 10, et récupérer le reste. Donc opérateur modulo.
    2. Transformer le nombre en chaîne de caractères et parcourir les caractères. Dans la mesure où au début, tu commences à lire le nombre de départ depuis une chaîne de caractères, ça me semlbe l'approche la plus logique et la plus simple.
      Dans ton code tu commence par transformer la valeur d'entrée (input) en int : à la place de ça, part directement de la chaîne de caractères, parcours ses différents caractères dans une boucle, et transforme chaque caractère en int, ce qui te permettra d'en faire la somme.
    3. autre évidence explicite de l'énoncé : l'aspect récursif. Lorsqu'on a calculé la somme de tous les chiffres, on réapplique l'algo sur cette somme... Donc la première question à se poser : quelle est la condition d'arrêt de la récursivité ? Comment la mettre en évidence par rapport à la façon de traiter une entrée (donc une chaîne de caractères)
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 11
    Par défaut Determiner la clé de contrôle d'un nombre entier n
    Bonsoir , j'essai d'appliquer le cas d'exemple de l'énoncé à savoir
    entrée un nombre n>0 , exemple : n = 3429 , la somme des chiffres est 18, pour 18 la somme est 9, et 9 est la clé de contrôle de 3429

    mais je ne sais pas comment m'y prendre

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Ignorons d'abord la problématique de l'entrée (si la donnée vient d'un fichier, ou si faut la saisir au clavier ou autre, peu importe).

    Donc, en dur :

    Tu dois calculer la somme des chiffres de n. Je t'ai dit qu'il fallait faire une boucle sur tous les caractères. Commence par écrire cette boucle, à récupérer un à un les caractères, les convertir en int, et en faire la somme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int somme = 0;
    for(int i=0; i<n.length(); i++) {
       int chiffre = n.charAt(i)-'0'; // prendre la valeur numérique du caractère à la position i 
       somme += chiffre; // l'ajouter à la somme
    }
    // somme vaut la somme des chiffres de n 
    System.out.println(somme); // affiche 18
    Ce n'est pas très compliqué, si ?

    Et bien maintenant, tu dois recommencer ça tel que n prenne la valeur String qui représente la valeur somme... et un certain nombre de fois. Jusqu'à atteindre une conditiond d'arrêt. Je t'ai demandé laquelle, à ton avis, sous-entendu, dans mon dernier message...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 11
    Par défaut Determiner la clé de contrôle d'un nombre entier n
    Bonsoir Joel et merci de vouloir m'aider mais je n'arrive pas à comprendre les éléménts de reponses que tu as posé:
    dans mon code j'ai déja initialisé une variable n ( int n = Integer.valueOf(line) ; je ne vois pas l'interêt de rentrer et initiliser n en dure " (String n = "3429");

    et en plus lors de mes tests sur eclipse j'ai un code erreur ;" error encoding int chiffre = n.charAt(i)-'0';

    voila

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par doudou1234 Voir le message
    je n'arrive pas à comprendre les éléménts de reponses que tu as posé:
    dans mon code j'ai déja initialisé une variable n ( int n = Integer.valueOf(line) ; je ne vois pas l'interêt de rentrer et initiliser n en dure "
    Il faut lire attentivement ce que j'ai écrit :

    Citation Envoyé par joel.drigo Voir le message
    Ignorons d'abord la problématique de l'entrée (si la donnée vient d'un fichier, ou si faut la saisir au clavier ou autre, peu importe).
    L'intérêt c'est de ce concentrer sur la partie que tu n'arrives pas à faire, le calcul qu'on te demande. La lecture de la donnée d'entrée dans le fichier j'ai bien vu que tu savais la faire. Mais on s'en fout de comment tu la lis. Ce qui est important c'est faire le calcul pour arriver au résultat qu'on te demande de calculer !

    Ensuite je te donne on ne peut plus explicitement la première itération de l'algorithme et je t'ai écrit en toutes lettres que tu dois recommencer le calcul autant de fois que nécessaire. Et je te pose une question pour la seconde fois. A la quelle tu ne réponds toujours pas. A partir de là, je ne vois pas moi l'intérêt de continuer à chercher à te mettre sur la voie si tu ne daignes pas répondre à une question que je te pose et qui est cruciale à l'établissement de l'algorithme final.

    Citation Envoyé par doudou1234 Voir le message
    et en plus lors de mes tests sur eclipse j'ai un code erreur ;" error encoding int chiffre = n.charAt(i)-'0';
    Forcément si tu continues à déclarer n en int, n.charAt(i) ça ne peut pas fonctionner ! (Maintenant, "error encoding", je ne vois pas le rapport. Probablement un truc avec l'encoding de ton fichier et l'éditeur que tu utilises.)

    Je t'ai pourtant écrit :

    Citation Envoyé par joel.drigo Voir le message
    Dans ton code tu commence par transformer la valeur d'entrée (input) en int : à la place de ça, part directement de la chaîne de caractères, parcours ses différents caractères dans une boucle, et transforme chaque caractère en int, ce qui te permettra d'en faire la somme.
    et
    Citation Envoyé par joel.drigo Voir le message
    Je t'ai dit qu'il fallait faire une boucle sur tous les caractères.
    L'intérêt il est là : partir d'un int ce n'est pas la bonne manière de faire. Parce que tu dois faire la somme de tous les chiffres du nombre ! Tu lis un String depuis le fichier. Ne le convertis pas en int. Utilise le String directement ! Et applique ce que je t'ai donné comme code.

    Je ne vois pas ce que je peux dire de plus pour t'aider. Je t'ai tout donné pour résoudre le problème. Sauf la réponse à la question que je t'ai posée, parce que je n'ai pas l'intention de tout faire à ta place. La réponse n'est pas compliquée à trouver : elle est implicitement dans l'énoncé du problème, déductible du résultat qu'on te donne à calculer (9).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. [Débutant] Garder la partie entiere d´un nombre
    Par Jeannnot dans le forum MATLAB
    Réponses: 3
    Dernier message: 04/02/2009, 15h46
  2. Format des nombres entiers, séparateurs de milliers
    Par zazaraignée dans le forum Langage
    Réponses: 2
    Dernier message: 26/10/2005, 01h25
  3. nombre entier
    Par eleve36 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 25/10/2005, 16h25
  4. [LG]Former un nombre entier à partir de chiffre naturel.
    Par lecanardjaune dans le forum Langage
    Réponses: 2
    Dernier message: 12/11/2003, 22h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo