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

C Discussion :

Déclaration et initialisation


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2018
    Messages : 4
    Par défaut Déclaration et initialisation
    Écrire un programme en c qui détermine si un nombre est parfait où pas

  2. #2
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 766
    Par défaut
    C'est marrant Les 2 définitions font peur

    Un nombre égal à la somme de ses diviseurs propres est parfait. Un diviseur propre est un diviseur autre que le nombre lui-même.
    Lorsque la somme d’une suite de nombres doubles les uns des autres est un nombre premier, il suffit de multiplier ce nombre par le dernier terme de cette somme pour obtenir un nombre parfait.
    L'exemple qui va bien :
    • 1+2=3 qui est premier donc 2x3=6 est parfait.
    • 1+2+4=7 qui est premier donc 4x7=28 est parfait.
    • 1+2+4+8=15 n’est pas premier.
    • 1+2+4+8+16=31 est premier donc 16x31=496 est parfait.


    Ensuite le bon Euclide a donné une formule :
    2^(p-1)*(2^p - 1) est parfait si p et (2^p - 1) sont premiers.
    Cela sert la récursion, une suite mathématiques

    Et là tu tombes sur :
    Les nombres parfaits sont rares, il n’en existe que trois inférieurs à 1000 qui sont 6, 28 et 496.
    Ensuite vient 8128, puis 33 550 336,
    8 589 869 056,
    137 438 691 328,
    2 305 843 008 139 952 128 (découvert par Leonhard Euler),
    2 658 455 991 569 831 744 654 692 615 953 842 176, …
    Donc cela se résume à 6 tests. C'est un programme de fou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        if ((nb == 6) || (nb == 28) || (nb == 496) || (nb == 8128) || (nb == 33550336) || (nb == 8589869056)) {
            printf("this is a perfect number\n");
        } else {
            printf("this is NOT a perfect number\n");
        }

    Source : Les nombres parfaits - sur le site "maths et tiques"

  3. #3
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2018
    Messages : 4
    Par défaut
    J'ai réussi à écrire l algorithme puis j'ai effectué la trace avec algobox ça fonctionne , le véritable problème c est lorsque je traduis en c ça donne pas le résultat attendu , je sais pas alors si j'ai mal initialiser ou pas où mal traduis

  4. #4
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2018
    Messages : 4
    Par défaut
    Si je souhaite que l'utilisateur entre un nombre
    Avant de déterminer s'il est parfait où pas j'ai ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Int main()
     Int c , nb,i
    Printf(" entrez un nombre\n");
    Scanf("%d",$nb);
    For(i==1; i<nb; i++)
      If(nb%i==0)
    C=c+1;
    If( c==nb)
    Printf(" il est parfait");
    Else
    Printf ("il n'est pas parfait");
     
    Return0;

  5. #5
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Écrire un programme en c qui détermine si un nombre est parfait où pas
    Vraiment ? Les formules de politesse, c'est bien quand on demande de l'aide : https://club.developpez.com/regles/#LIV-A

    Accessoirement, on n'est pas là pour faire votre travail : https://club.developpez.com/regles/#LIV-N

    J'ai réussi à écrire l algorithme puis j'ai effectué la trace avec algobox ça fonctionne , le véritable problème c est lorsque je traduis en c ça donne pas le résultat attendu , je sais pas alors si j'ai mal initialiser ou pas où mal traduis
    De plus, on n'est pas devin, sans code ni message d'erreur ni description du problème, on ne pourra pas vous aider : https://club.developpez.com/regles/#LIII-C

    Int main()
    Int c , nb,i
    Printf(" entrez un nombre\n");
    Scanf("%d",$nb);
    For(i==1; i<nb; i++)
    If(nb%i==0)
    C=c+1;
    If( c==nb)
    Printf(" il est parfait");
    Else
    Printf ("il n'est pas parfait");

    Return0;
    Ceci n'est pas du C...

    Pensez également à ceci pour poster du code ça permet de le rendre plus lisible : https://club.developpez.com/regles/#LIII-E

    On attend votre code avec les explications de ce qui ne va pas maintenant

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 831
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 831
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Cyrille motchiyo Voir le message
    Avant de déterminer s'il est parfait où pas j'ai ceci
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Int main()         // pas de majuscule à "int"
     Int c , nb,i                   // idem + manque l'accolade  
    Printf(" entrez un nombre\n");
    Scanf("%d",$nb);                   // $nb ??? tu te crois en shell ???
    For(i==1; i<nb; i++)               // i == 1 !!!!! Apprend à assigner une valeur à une variable (ou alors il s'agit vraiment d'une comparaison)...
      If(nb%i==0)
    C=c+1;                                  // La variable "C" n'a pas été initialisée. Ah non, en réalité elle n'existe même pas
    If( c==nb)
    Printf(" il est parfait");
    Else
    Printf ("il n'est pas parfait");
    
    Return0;                            // Pas d'accolade au début donc pas d'accolade à la fin. Au moins tu es cohérent avec toi-même
    Ton algorithme me semble un peu bizarre. Tu regardes si le nombre de diviseurs de "nb" vaut "nb" ce qui, mis à part pour "1" et "2", n'est pas possible (par exemple 48 n'a pas 48 diviseurs !!!) mais bon, ceci n'est pas une démonstration au sens mathématique du terme alors qui sait, peut-être qu'effectivement il existe un nombre "X" qui a "X" diviseurs
    Et euh... accessoirement tester la division par 1 me semble un peu inutile (je crois qu'il existe une légende qui dit que tous les nombres sont divisibles par 1).
    Sinon mes remarques en rouge dans ce canada-dry (ça ressemble à du C, son nom sonne comme un nom de prog C mais ce n'est pas du C).

    Et maintenant un conseil: découpe les taches. D'un côté le main() qui se chargera de faire saisir le nombre et d'afficher s'il est ou n'est pas parfait ; et de l'autre une fonction qui détermine si le nombre est ou n'est pas parfait. Ainsi tu pourras tester le main tout seul, puis la fonction toute seule, et quand les deux seront ok, tu pourras alors intégrer la fonction dans le main.

    Et aussi peut-être ouvrir un tutoriel de C parce que vu ton niveau...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2018
    Messages : 4
    Par défaut
    Merci , j'arrivais pas à formater le code source raison pour laquelle je l'ai écrit dans les commentaires
    Je tiens compte de toutes vos précisions

Discussions similaires

  1. [XL-2013] Déclaration et Initialisation
    Par perouse07 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 08/11/2015, 10h28
  2. Déclaration et initialisation d'une variable
    Par micjal dans le forum Visual C++
    Réponses: 6
    Dernier message: 23/04/2014, 18h42
  3. Réponses: 18
    Dernier message: 26/01/2007, 22h18
  4. [VB.Net]Déclaration et initialisation d'une variable
    Par DonF dans le forum Windows Forms
    Réponses: 6
    Dernier message: 14/11/2006, 20h05
  5. déclaration et initialisation d'une matrice
    Par Gébix dans le forum C++
    Réponses: 5
    Dernier message: 16/02/2006, 01h22

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