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 :

Resolution informatique d'une equation


Sujet :

C++

  1. #1
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Resolution informatique d'une equation
    Bonjour

    Je suis nouveau et cherche à résoudre informatiquement l'équation ci dessous :

    1333*d + 130*c - 20*b - 332*a = 0

    a, b, c, d étant des entiers.

    J'ai cru comprendre que l'informatique avec ses boucles peut le faire.

    Quelqu'un pourrait-il me la résoudre et pour mon info personnelle, me communiquer le programme?

    D'avance merci

  2. #2
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Il y a des outils dédiés à la résolution formelle d'équations, voire mieux, mais là ... La solution est un hyperplan dont la normale est données par les coefs de l'équation. La machine ne pourra jamais donner la solution complète. Au mieux une triviale {0,0,0,0} parmi l'infinité de solutions.

    Bref, ce sujet me parait sans rapport avec le C++. Ou pas assez bien cerné
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  3. #3
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    En fait, je me suis mal exprimé:

    a, b, c, d sont des entiers à 1 chiffre

    le nombre a ne peut prendre que les valeurs 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
    il en est de même pour b, pour c et pour d.

    c'est en ce sens que je pense que c'est un probleme de boucle.

    Cela peut se faire à la main avec une calculatrice en essayant toutes les valeurs mais ...

    Alors je pense que la capacité de calcul d'un ordinateur doit pouvoir faire ce travail et rapidement.

    c'est la force d'un langage de programmation et je pensais que C ou C++ saurait faire cela.

    Merci de m'avoir répondu.

  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Vu que le nombre d'essais à faire va être raisonnable, un méthode bourrine de base va effectivement marcher. Une telle méthode est bien à base de boucles. Maintenant, essaye de la mettre en œuvre, montre nous ce que tu obtiens, et on pourra t'aider. Mais on ne fera pas le travail à ta place...

    Pour ton information, il y a 2 solutions uniquement, celles avec des 0 partout, et une autre.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  5. #5
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Tout cela me rappelle des vieux souvenirs: http://fr.wikipedia.org/wiki/Optimis...ombres_entiers
    C'est dans cette direction qu'il faut creuser.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  6. #6
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Citation Envoyé par Luc Hermitte Voir le message
    Tout cela me rappelle des vieux souvenirs: http://fr.wikipedia.org/wiki/Optimis...ombres_entiers
    C'est dans cette direction qu'il faut creuser.
    Même pas besoin : Comme il ne cherche que les solutions à un chiffre, une simple boucle suffit, et trouve la solution en un temps non perceptible.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  7. #7
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Ah oui. J'avais zappé ce dernier détail effectivement.
    Donc oui, 4 boucles imbriquées bien bourrines feront l'affaire.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  8. #8
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    N'ayant pas de compilateur et ayant seulement quelque peu travaillé sur du turbo pascal dans les années 1990, je propose quand même un pg (sans doute pas dans le bon forum _toutes mes excuses) pour avoir votre avis.
    Je sais qu'il y doit y avoir une solution autre que (0,0,0,0)
    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
     
    Var 
      a,b,c,d : Integer;
     
    begin
    for a:= 0 to 9 do
        for b:= 0 to 9 do
          for c:= 0 to 9 do
            for d:= 0 to 9 do
          begin
             if (1333*d+130*c-20*b-332*a=0 and a<>0) then
               begin
    		WriteLn a;
                    WriteLn b;
                    WriteLn c;
                    WriteLn d ;
               Exit; //ou pause pour pouvoir lire a, b,c,d;
             end;
          end;
      end;
    end;
    end.

  9. #9
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    L'idée est là (bien que personnellement, je n'aurais que 3 boucles et je vérifierais que la résolution de l'équation donne bien un entier dans l'intervalle désiré).

    La syntaxe n'est pas correcte, même en Pascal (même aux yeux de quelqu'un qui n'a plus fait de Pascal depuis plus de 20 ans).

    Un forum n'est à mon avis pas l'endroit adapté pour te faire passer de ça à un programme en C++ correct. (Certains peuvent peut-être te conseiller des titres de livres ou des sites, pas moi, juger de la qualité de ressources destinées à des débutants demande autant qu'une opinion sur leur qualité technique - ce que je pourrais juger -, un contact continu avec des débutant pour en juger de la qualité pédagogique - aspect que je suis incapable de juger).
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  10. #10
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    OK
    Je ne vous fais pas perdre plus de temps.
    Le pire c'est que je cherche à rendre service à quelqu'un!
    Merci quand même.

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 073
    Points : 12 119
    Points
    12 119
    Par défaut
    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
    25
    26
    27
    28
    29
    30
    31
    #include <iostream>
     
    const int maxA = 9;
    const int maxB = 9;
    const int maxC = 9;
    const int maxD = 9;
     
    const int coefA = -332;
    const int coefB = -20;
    const int coefC = 130;
    const int coefD = 1333;
     
    int main()
    {
    	for(int i(0); i<maxD; ++i)
    	{
    		for(int j(0); j<maxC; ++j)
    		{
    			for(int k(0); k<maxB; ++k)
    			{
    				long tmp = (coefD*i + coefC*j + coefB*k) ;
    				int rapporA = -(tmp/coefA);
    				if( tmp % coefA == 0 && (rapporA <= maxA && rapporA>=0))
    				{
    					std::cout << "a = " << rapporA << ", b = " << k << ", c = " << j << ", d = " << i << std::endl;
    				}
    			}
    		}
    	}
    	return 0;
    }

  12. #12
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci bacelar
    Je vois qu'il y a encore des gens sympas.
    J'ai téléchargé Dev-C++ 4.9.9.2 et l'ai installé.
    Je compte faire des essais personnels plus tard
    J'ai copié le fichier texte
    j'ai fait F9 (compiler et executer)
    la compil se passe bien mais je n'ai pas de résultat, seulement une fenêtre très éphémère!
    peux-tu me donner quelques précisions ?
    d'avance merci.

  13. #13
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Il faut configurer l'IDE pour qu'il laisse la console ouverte.
    Le résultat est dedans.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  14. #14
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 073
    Points : 12 119
    Points
    12 119
    Par défaut
    Votre demande est basique et ici, dans un forum d'entraide, on est sur l'approche "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson. (Confucius)".

    Je comprends donc qu'on ne vous réponde pas avec la réponse directe.

    Si vous ne comptez pas investir dans l'apprentissage, le plus simple est de lancé l'exécutable généré depuis un shell de commande.(CMD.EXE sous Windows).

  15. #15
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Ca marche

    j'ai rajouté
    system("pause");
    avant return.

    Encore merci

  16. #16
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Sauf que system("pause"); soigne le symptome, pas le problème.
    Comme tout outil puissant, il faut apprendre à régler son EDI avant de s'en servir.

    Pour percer un trou, tu choisis la mèche de perceuse adaptée au matériau, pour cuire un gateau, tu choisis le bon thermostat, et pour compiler et exécuter, tu règles ton EDI.

    C'est à dire activer les warnings de compilations et faire laisser la console ouverte pour les projets consoles.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

Discussions similaires

  1. resolution d'une equation
    Par yousss dans le forum Images
    Réponses: 1
    Dernier message: 30/01/2012, 18h08
  2. resolution d'une equation
    Par raicolin dans le forum Mathématiques
    Réponses: 3
    Dernier message: 20/04/2011, 01h18
  3. Resolution d'une equation
    Par nathan92 dans le forum MATLAB
    Réponses: 15
    Dernier message: 12/03/2009, 18h28
  4. Réponses: 6
    Dernier message: 17/11/2007, 13h17

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