Programme en C (casse-tête)

Bonjour,
alors voilà mon problème :
je suis tombé sur une énigme et je me suis dis que je pourrais la résoudre avec un programme pour réviser mon C. J'ai tout essayé mais rien n'a marché. voilà le but du programme :

xxx*x=xxxx
(x = chiffre quelconque)
chaque chiffre doit être différent (et de 1 à 8)
je dois trouver deux multiplications dont le résultat est bon.
j'ai essayé de faire deux tableaux pour les nombres a 3 et 4 chiffres mais la valeur de mon tableau change durant les tests que j'ai fait pour savoir si il y avait des chiffres communs dans les combinaisons.

Bref, je cherche le code C exact pour réduire le champ de recherche voir même trouver la réponse.

Merci d'avance.

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. Pour les multiplications de la forme xxx*x = xxxx (x entre 1 et 8):
    453*6=2718
    582*3=1746
    Voici le code source:
    fr . dark-creation . co . cc / main1 .c

    Pour les multiplications de la forme xxx*xx = xxxx (x entre 1 et 9):
    138*42=5796
    157*28=4396
    159*48=7632
    186*39=7254
    198*27=5346
    297*18=5346
    483*12=5796
    Voici le code source:
    fr . dark-creation . co . cc / main2 .c

    PS: copier/coller l'adresse et puis supprimez les espaces ;)
    Cdlt,
    1. N'oubliez pas de mettre "Problème résolu" ;)
  2. Explicite ton problème... Tu veux faire un programme qui trouve des nombres-vampires? c'est à dire des multiplications comme: 27*81 = 2187 ou encore 35*41 = 1435 ??
    Si tu m'explique clairement ce que tu veux, je pourrais le réaliser ce soir ;)

    Cdlt =)
    1. je voudrais le code source pour trouver les nombres (j'ai déjà la réponse mais je veux le code)
      c'est un programme qui cherche toutes les possibilités de nombres tout en vérifiant que aucun chiffre n'est pareil (ex: 34*56 il n'y a qu'une seule fois chaque chiffre).
    2. En fait mon plus gros problème c'est d'affecter un nombre complet a un tableau ex: 6123
      donc tableau[0] = {6};
      tableau[1] = {1};
      tableau[2] = {2};
      tableau[3] = {3};
      Voilà j'espère que quelqu'un pourra m'aider.
      Merci d'avance.
    3. Salut !
      Perso, je trouve que la programmation modulaire est... super ^^
      Donc je te suggère de faire une fonction de se style:

      void nombre_vers_tableau (int nombre, int *tableau)
      {
          tableau[0] = nombre / 1000 ;
          tableau[1] = ( nombre / 100 ) % 10  ;
          tableau[2] = ( nombre / 10 ) % 10 ;
          tableau[3] = nombre % 10 ;
      }
    4. euh tu peux me donner le code source complet car le mien marche pas je sais pas pourquoi.
    5. Eh bien mon cher, pour te donner une solution [à supposer que tu t'es vraiment bien cassé la tête sur ton exercice ^^ ] faudrai que tu me confirme le peu que j'ai pu comprendre de ta question initiale:
      étant donne 4 chiffres a,b,c,d non nuls inférieurs strictement à 9 chaqu'un, trouver les nombres x = abc et y = d tel que
      x * y = z = abcd

      j'ai bien compris l'énoncé ? ou pas ?

      PS: tu peu aussi nous aider à t'aider, par exemple en mettant ton code source érroné [j'éspère que tu indente bien ^^]
  3. Salut,
    j'ai trouvé les résultats suivant:
    453*6=2718
    582*3=1746
    mon algo est vraiment pas beau ....donc je pense que tu pourras faire mieux....
    @+