progr de recherche

progr de recherche - C - Programmation

Marsh Posté le 01-12-2004 à 16:52:27    

voila je dois faire un prog : on doit ecrire un prog qui affiche tous les nbr qui ont cette propriete : 153=1^3+5^3+3^3 et qui sont inferieur a 2 000 000 000 , sachant qu on doit partir a 0 et on fait tt le temps +1  qq un peut m aider car la je dois rendre ce prog et je vois tjs pas comment je dois faire !


Message édité par kelk 1 le 01-12-2004 à 17:13:14
Reply

Marsh Posté le 01-12-2004 à 16:52:27   

Reply

Marsh Posté le 01-12-2004 à 16:56:05    

Lis les règles du forum.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 01-12-2004 à 17:00:27    

Aucun problème.
 

Code :
  1. #include <stdio.h>
  2. int main()
  3. {
  4.    int i=0;
  5.    while(404)
  6.    {
  7.      if (i==153)
  8.      {
  9.         printf("153=1^3+5^3+3^3\n" );
  10.         break;
  11.      }
  12.      ++i;
  13.    }
  14. }

Reply

Marsh Posté le 01-12-2004 à 17:01:19    

non  qui ont cette propriete  pas ceux qui font seulement 153 ! on commence avec le nbr 1 on verifie siil est eleve au cube il vaut son nbr si c bon on l affiche et la limitte c 2000 000 dont on va avoir des nbr style 253=? 2^3+5^3+3^3 si oui afficher sinon faire la mm chose avec le nombre +1  


Message édité par kelk 1 le 01-12-2004 à 17:03:47
Reply

Marsh Posté le 01-12-2004 à 17:01:41    

Lam's a écrit :

Aucun problème.
 

Code :
  1. #include <stdio.h>
  2. int main()
  3. {
  4.    int i=0;
  5.    while(404)
  6.    {
  7.      if (i==153 && i < 2000000000)
  8.      {
  9.         printf("153=1^3+5^3+3^3\n" );
  10.         break;
  11.      }
  12.      ++i;
  13.    }
  14. }




 
 :non: t'as fais une faute  :D

Reply

Marsh Posté le 01-12-2004 à 17:03:02    

On est près à t'aider (sincèrement), mais il faut d'abord que tu nous montre ce que tu as commencé à faire, comme l'indiquent les règles du forum Prog.
 
Et que tu poses des questions précises, plutôt que: "comment faire ?".

Reply

Marsh Posté le 01-12-2004 à 17:06:59    

ben en fait ce que j arrive pas a faire c decomposer le nbr  ( ex : 562 c'est 5 , 6 et 2 ) pour pouvoir le tester c ça mon probleme

Reply

Marsh Posté le 01-12-2004 à 17:07:32    

Tu raisonnes à l'envers AMHA.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 01-12-2004 à 17:08:42    

amha ? soit c est ça mon probleme  et j aurais aimer des conseils etc pour y arriver a faire cet exercice


Message édité par kelk 1 le 01-12-2004 à 17:10:06
Reply

Marsh Posté le 01-12-2004 à 17:09:44    

à mon humble avis.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 01-12-2004 à 17:09:44   

Reply

Marsh Posté le 01-12-2004 à 17:10:30    

personne ne sait comment faire ?

Reply

Marsh Posté le 01-12-2004 à 17:13:48    

kelk 1 a écrit :

ben en fait ce que j arrive pas a faire c decomposer le nbr  ( ex : 562 c'est 5 , 6 et 2 ) pour pouvoir le tester c ça mon probleme


amha= "à mon humble avis".
 
Pour la décomposition, c'est très simple:
Tu effectues une boucle interne, qui fait:
  N=153;
  Tant que N différent de 0
     | chiffre=N modulo 10
     | N=N divisé par 10
     | Faire quelque chose avec chiffre (le mettre au cube par exemple)
   

Reply

Marsh Posté le 01-12-2004 à 17:14:54    

C'est si compliqué que ça de faire des divisions par puissances de 10?[:mlc]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 01-12-2004 à 17:15:43    

Decomposer un nombre entier est une chose très simple en C et je pense qu'en te documentant un petit peu tu devrais pouvoir trouver la méthode à utiliser très facilement.
Le programme que tu dois écrire fait 25 lignes (sans chercher à l'optimiser).

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. int main(int nb_parametres, char** parametres)
  5. {
  6. int  i=0;
  7. int  unite=0;
  8. int  j=0;
  9. int  r=0;
  10. for (i=0;i<2000000000;i++)
  11.   {
  12.    /* ... :o) */
  13.   }
  14. return EXIT_SUCCESS;
  15. }

Voilà déjà la structure.
J'ai trouvé les nombres 0, 1, 153, 9474, 9800817, ...


Message édité par darkoli le 01-12-2004 à 17:16:36

---------------
Le site de l'année :D (XHTML 1.0 strict) : http://darkoli.free.fr/index.html
Reply

Marsh Posté le 01-12-2004 à 17:15:59    

mwai pq pas je vais essayer mais je crois que j ai fais ça y a pas lgt et ça a pas marche  
 

Reply

Marsh Posté le 01-12-2004 à 17:17:04    

kelk 1 a écrit :

mwai pq pas je vais essayer mais je crois que j ai fais ça y a pas lgt et ça a pas marche

Montre nous ce que tu as fais alors !


---------------
Le site de l'année :D (XHTML 1.0 strict) : http://darkoli.free.fr/index.html
Reply

Marsh Posté le 01-12-2004 à 17:18:54    

je suis deso mais je saurais pas car j ecris tjs par dessuset ce que j ai pour le moment ne ressemble plus a rien


Message édité par kelk 1 le 01-12-2004 à 17:19:22
Reply

Marsh Posté le 01-12-2004 à 17:20:17    

Bon, alors essaie d'avancer avec les pistes qu'on ta données et reviens si tu as un pb.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 01-12-2004 à 17:22:02    

c est ce que je comptais faire

Reply

Marsh Posté le 01-12-2004 à 17:22:59    

darkoli a écrit :

J'ai trouvé les nombres 0, 1, 153, 9474, 9800817, ...


Tu trouves pas 371, mais tu trouve 9474 ? T'es en base 10, t'es sûr ? :)

Reply

Marsh Posté le 01-12-2004 à 17:27:53    

Lam's a écrit :

Tu trouves pas 371, mais tu trouve 9474 ? T'es en base 10, t'es sûr ? :)

J'ai compris l'énoncé de la façon suivante :
N = C1^Cn + C2^cn + C3^Cn + ... + Cn^Cn
Où C1 est le plus grand chiffre du nombre et Cn le plus petit. :D
Donc 371 != 3^1 + 7^1 + 1^1.
Mais 9474 = 9^4 + 4^4 + 7^4 + 4^4.


---------------
Le site de l'année :D (XHTML 1.0 strict) : http://darkoli.free.fr/index.html
Reply

Marsh Posté le 01-12-2004 à 17:28:24    

Voici la solution canonique à ce problème sous unix:
 

Code :
  1. cat > makefile
  2. all:
  3.         @echo "0 1 153 370 371 407"
  4. ^D
  5. make

Reply

Marsh Posté le 01-12-2004 à 17:30:18    

darkoli a écrit :

J'ai compris l'énoncé de la façon suivante :
N = C1^Cn + C2^cn + C3^Cn + ... + Cn^Cn
Où C1 est le plus grand chiffre du nombre et Cn le plus petit. :D
Donc 371 != 3^1 + 7^1 + 1^1.
Mais 9474 = 9^4 + 4^4 + 7^4 + 4^4.


Bah non, il suffit juste mettre tous les chiffres au cube.  
 
Tu sais, on est que début décembre. C'est plus tard que ça viendra les problèmes intéressants et les fins de TP un peu alambiquées.

Reply

Marsh Posté le 01-12-2004 à 17:32:22    

Lam's a écrit :

Bah non, il suffit juste mettre tous les chiffres au cube.  
 
Tu sais, on est que début décembre. C'est plus tard que ça viendra les problèmes intéressants et les fins de TP un peu alambiquées.

Bon ben ça enlève deux lignes à mon programme !


---------------
Le site de l'année :D (XHTML 1.0 strict) : http://darkoli.free.fr/index.html
Reply

Marsh Posté le 03-12-2004 à 20:05:13    

Ouais j'ai optimisé mon petit programme en utilisant une table où j'ai stocké les puissances (1^1, 1^2, ...) et je divise le temps de traitement par 6,651965484. :D


---------------
Le site de l'année :D (XHTML 1.0 strict) : http://darkoli.free.fr/index.html
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed