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

VB 6 et antérieur Discussion :

[VB6]Variable pouvant aller jusqu'à 10^77. Possible?


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut [VB6]Variable pouvant aller jusqu'à 10^77. Possible?
    Bonjour.

    je souaiterais savoir comment calculer un état de progression dans une fonction récursive. un problème à déja été posé sur le forum algorithmes:http://www.developpez.net/forums/viewtopic.php?t=428033

    Je n'ai trouvé actuellement qu'une methode valable pour résoudre mon problème, celle-ci êtant de calculer la somme totale des possibilités et de couper retirer ce qui est nésséçaire quand une branche est coupée.
    le problème, est que je ne connais que la factorisation (le calcul est une multiplication) du total car le total peut aller jusqu'a 2*10^77.

    si quelqu'un à une idée...

    merci

  2. #2
    Membre expérimenté Avatar de Mandalar
    Profil pro
    Étudiant
    Inscrit en
    Mai 2004
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2004
    Messages : 121
    Par défaut
    Bonsoir,
    donner 10^77 a une variable est possible (avec un double). Pour ta barre de progression tu peux la faire aller de 0 a 100, en commencant a l'incrémenter lorsque ta variable est a 10^75 comme valeur, non ? (ou peut-etre que ce serait plus cohérent de prendre la valeur moyenne de nombre de possibilités ? ).
    Comme tu le dis, le probleme vient du fait que tu ne sais pas évaluer simplement le nombre d'itérations...

  3. #3
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    double va jusqu'à 10^77? merci, je croyais qu'elle ne faisait qu'ajouter des virgules au long.


    je vais tester ça.
    ensuite, il suffit effectivement de faire un découpage.

    au fait, sait-tu quelle est la taille maximum précise du "max" d'une progressbar? (et du min. à la limite on peut doubler la taille en partant du négatif.)


    merci beaucoup

  4. #4
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    Désolé, mais ça ne vas pas: en effet, je ne peut pas incrmenter ma variable de un vu qu'il me l'arrondi (avec la methode des virgules flottantes).

    si tu à une idéee...

    salut

  5. #5
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    Par défaut Re: [VB6]Variable pouvant aller jusqu'à 10^77. Possible?
    Citation Envoyé par méphistopheles
    .../...
    le problème, est que je ne connais que la factorisation (le calcul est une multiplication) du total car le total peut aller jusqu'a 2*10^77.

    si quelqu'un à une idée...

    merci
    T'es sur ?

    A raison d'un cycle d'opération (boucle récursive) par 1/10 000 000 de sec soit 10^7
    et de 10^7 sec tous les 4 mois, soit 10^14 cycles en 4 mois ou encore 3*10^16 en 1 siècle ...
    quel peut être l'intérêt de représenter de telles valeurs (2*10^77 ou approximativement 10^60 fois le siècle précédent) ?

    J'appuie un peu pour essayer de faire comprendre la grandeur citée (probablement plus que le nb d'atomes dans l'univers).

    Actuellement, il est possible de représenter des entiers allant jusqu'à 8*10^28 avec VB et c'est déjà beaucoup pour l'essentiel des application.

  6. #6
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    he bien en fait, c'est le nombre de possibilités MAXIMAL (peu probable) totales s'il n'y avais pas un tri (tu l'aurais su i tu avais regardé le premier post du lien que je donne en haut).

    Du fait que c'est une procédure récursive, celle-ci va éliminer des groupes de solutions par blocs entiers (au premiers niveaux de la procédures).
    Même dans le cas maximum de possibilités à l'arrivée, j'arrive à 10^17 tout au plus encore que j'ai calculé qu'il me faudrais dans les 700 000 ans pour les calculer (à la vitesse de ma procédure avec un 3Ghz ). Cependant, la procédure est faite pour calculer des probabilités plus réduites.
    Le problème est que pour incrémenter ma progessbar, le seul nombre que je peux calculer (vive les probas) avant de lancer la procédure et qui soit utilisable est celui-ci. (je rajoute une grande valeur lorsque je coupe un certains nombre de possibilités.)

    si tu à une idée Dark Vader...

    salut

  7. #7
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    Par défaut
    Je l'ai bien lu, rassure-toi, par contre je doute que tu ais saisi le fond de ma pensée - en clair, plusieurs possibilités :
    - tu t'es planté dans ton évaluation étant donné la grandeur de celle-ci
    - supposons que non (suis sceptique mais par principe je reste ouvert à toute possibilité tant qu'il n'est pas démontré son impossibilité)
    et alors vb n'est pas l'outil approprié pour ce genre de travail (à savoir même si un outil existant dans l'univers existe pour traiter ce genre de problème)
    - dans tous les cas de figures que représente 1 dans un progressbar seulement par rapport à 10^6 ou 7, alors que dire de 1 devant 10^17 ou 27 ...

    Concernant le calcul des grands nombres sous vb :
    - soit tu te limites à 8*10^28 et tu as l'outil existant sous vb
    - soit tu utilises une chaine de caractères et reproduis les modèles d'opération avec
    - soit tu utilises une bibliothèque spécialisée (MATLAB)
    - soit tu te crées un système de base 10^27 comme l'hexadecimal est de base 16 style &GNabc tel que a, b ou c varie de 0 à 10^27

  8. #8
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    je n'ajoute pas un par un les indices à la progressbar. en fait, la majoritée seront ajoutés par bloc (énorme). cependant, je risque d'avoir un dépassement où de n'arriver jamais à la fin de ma progressbar de cette manière.
    je comptais sinon diviser celle-ci en plusieurs progressbars (quand l'une est remplie, elle se décrémente et incrémente de 1 la suivante.) le problème est que pour cela, j'ai besoin de diviser mon bloc en trois parties non égales et pour cela, je dois faire une bonne manipulation (donc non arrondie).

    Citation Envoyé par DarkVader
    - soit tu te crées un système de base 10^27 comme l'hexadecimal est de base 16 style &GNabc tel que a, b ou c varie de 0 à 10^27
    je suis intéressé, tu pourrais préciser?

    merci

  9. #9
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    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
    Type hGN
        rang0 As Variant
        rang1 As Variant
        rang2 As Variant
    End Type
     
    Function monType(a, b, c) As hGN
        monType.rang0 = CDec(a)
        monType.rang1 = CDec(b)
        monType.rang2 = CDec(c)
    End Function
     
     
     
    Sub test()
        Dim myVar As hGN, a, b, c
        a = "1000000000000000000000000001"
        b = "1000000000000000000000000002"
        c = "1000000000000000000000000003"
     
        myVar = monType(a, b, c)
        ' représente la valeur (myvar.rang2 * (base^2)) + (myvar.rang1 * base) + myvar.rang0
        ' avec base = 10^27
     
        ' démontration d'une opération inférieure à 7.9*10^28
        Debug.Print myVar.rang0 + myVar.rang1 + myVar.rang2
     
    End Sub

    Te reste à faire le meilleur :
    les fonctions d'opération sur ce modèle (Addition, soustraction etc ...) lol
    et pour t'encourager, tu n'as qu'à te dire qu'une fois développée, ça fonctionne quelquesoit la base si tu as le bon gout de la poser en variable
    Amuses toi bien.

  10. #10
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    Merci, je pensait éviter un truc du genre mais bon, vas falloir s'y mettre.

    bon, je vous donne des nouvelles dés que j'aurais trouvé.


    salut

  11. #11
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    c'est bon, j'ai fini par créer cette bibliotèque ( grace au forum algo)

    merci à tous.

  12. #12
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    Par défaut
    Rebonjour,
    Maintenant tu as la possibilité d'effectuer des calculs sur les grands nombres avec la librairie VB6i
    qui contrairement à VB6 n'est pas limité puisque les calculs peuvent porter sur des nombres entiers de plusieurs centaines de chiffres.

    Il y en a un exemple dans les contributions :
    Exemple d'application avec dépendance COM sans installation
    qui repose sur une Calculette opérant sur les grands nombres (jette un oeil aux sources).

    Nom : sCALC.jpg
Affichages : 193
Taille : 64,2 Ko

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [OLE Excel] Aller jusqu'à la dernière cellule rempli
    Par JBrek dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 07/08/2009, 19h21
  2. [MySQL] Variable pouvant contenir des apostrophes
    Par god_enel dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/01/2007, 09h26
  3. [VB6]variable dans 2 procedures
    Par Spiritkiller dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 04/05/2006, 19h52
  4. [VB6]Variable Globale
    Par Lucas42 dans le forum VB 6 et antérieur
    Réponses: 34
    Dernier message: 27/04/2006, 09h22
  5. [VB6] Variable = Valeur d'une requete Select
    Par bb62 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 23/01/2006, 14h40

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