Partage
  • Partager sur Facebook
  • Partager sur Twitter

Représentation de grands entiers

    5 janvier 2009 à 14:59:39

    Bonjour, j'essaie de représenter les grands entiers.
    En gros, par exemple pour le nombre 8642097581 on obtient des paquets de ce genre : 581 × 1000^0 + 97 × 1000^1 + 642 × 1000^2 + 8 × 1000^3
    Et donc ces valeurs sont ensuite stockées dans un tableau.

    La on cherche à créer le constructeur qui utilise l'entier passé en paramètre, mais je ne vois pas trop comment faire, quelqu'un aurait-il une idée?
    • Partager sur Facebook
    • Partager sur Twitter
      5 janvier 2009 à 15:02:18

      hein ??? pourquoi cherche tu as représenter des grands entiers alors qu'il y'a une class qui le fait ?
      http://java.sun.com/j2se/1.4.2/docs/ap [...] gInteger.html


      pourquoi travaille tu avec des multiplications ?pour représenter un entier tu peux faire un tableau qui contiens une partie de l'entier a chaque fois
      exemple :

      pour le chiffre 123454376547467

      tableau[0] = 547467;
      tableau[1] = 454376;
      tableau[2] = 123;

      .... pour tous ce qui est calcul tu travail en calcul écris et c'est ok ....
      • Partager sur Facebook
      • Partager sur Twitter
        5 janvier 2009 à 15:07:40

        Ben disons qu'on doit réaliser un tp en cours qui fait ca.... Mais ca fait longtemps qu'on a pas codé en java et je vois pas trop comment faire.

        Mon problème est surtout au niveau de la séparation de l'entier en plusieurs partie.
        • Partager sur Facebook
        • Partager sur Twitter
          5 janvier 2009 à 15:10:09

          ???
          je n'ai pas très bien compris ce que tu voulais faire en faites :s
          tu dis

          Citation : toi

          En gros, par exemple pour le nombre 8642097581 on obtient des paquets de ce genre : 581 × 1000 0 + 97 × 10001 + 642 × 1000 2 + 8 × 1000 3"


          pourquoi multiplier par 10001 par 1000 2 °_0 pourquoi n'utilise tu pas des multiples de 10 ?
          ça n'a aucun sens de multiplier par 10001 ou 10002 bah sinon la séparation c'est facile hein :o

          tu dois juste utiliser l'opérateur "%" et "/" et c'est ok :)
          • Partager sur Facebook
          • Partager sur Twitter
            5 janvier 2009 à 15:11:12

            Arg c'est les puissances qui ne sont pas passées excuse moi, je vais éditer.
            • Partager sur Facebook
            • Partager sur Twitter
              5 janvier 2009 à 15:13:46

              ha oké ^^ ça a plus de sens comme ça :)
              ben pas très dur en sois :)
              je suppose que tu prend soit un long soit un String en paramètre du constructeur ??


              ben le principe est simple :o tu utilise des multiples de 1000 :o
              donc si c'est un String c'est simple :)

              int[] tableau;
              
              public GrandEntier(String LeChiffre){
              tableau = new int[Math.floor(LeChiffre.length/3.0)];
              int temp =0;
              for(int i =0; i<tableau.length();i++){
                temp = LeChiffre.length()-3;
                if(temp <0){temp =0;} 
                tableau[i] = Integer.parseInt(LeChiffre.substring(temp));
                LeChiffre = LeChiffre.substring(0,temp);
                 }
              }
              

              • Partager sur Facebook
              • Partager sur Twitter
                5 janvier 2009 à 15:15:26

                La le paramètre est un int.
                Pour le string je vois comment faire, mais pour un int je sais pas comment découper le tout.

                Je pense pouvoir réussir avec les modulo

                par exemple 8888%1000 me donnera 888 que je stocke dans le tableau
                Ensuite je retire le modulo et il me reste 8000, que je divise par 1000 et j'obtiens 8
                Même scénario et j'arrive à cela:

                tab[0]=888
                tab[1]=8

                Enfin je vais voir, je te tiens au courant =p
                • Partager sur Facebook
                • Partager sur Twitter
                  5 janvier 2009 à 15:29:30

                  ben voilà ^^ tu vois tu avais pas besoins de moi :)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    5 janvier 2009 à 15:38:26

                    J'ai fais ca

                    public GrandEntier(int x){
                           if (baseInt==0) baseInt=baseInt();
                           int nombre=x;
                           while(nombre>=1000)
                           { 
                        	   int reste = nombre%1000;
                        	   chiffres.add(reste);
                        	   nombre -= reste;
                        	   nombre/=1000;
                        	   
                           }
                           if(nombre!=0)
                           {
                        	   chiffres.add(nombre);
                           }
                               
                           
                        }
                    

                    Je pense que ca va marcher je vais voir, je vais faire la fonction pour afficher les paquets pour voir.

                    Merci à toi pour tes réponses rapides et précises, je repasserai surement par la d'ici 18 h si j'ai d'autres problèmes.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      5 janvier 2009 à 19:00:34

                      je sais pas comment fonctionne ton code mais j'avoue que il y'a un truc qui me chiffonne :o

                      chiffres.add(reste);
                      comment il sais a quel puissance il doit exposer les chiffre puis tu fais

                      if(nombre!=0)
                      {
                      chiffres.add(nombre);
                      }

                      ça veux dire que si tu fais rentré "1000" dans ton GrandEntier .... il va le transformer en "1" vus qu'il ne vas pas rajouter les 3 zero derrier :o
                      • Partager sur Facebook
                      • Partager sur Twitter

                      Représentation de grands entiers

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown