begin process at 2012 05 27 20:04:32
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > UN INTERPRÉTEUR POUR RATIONNELS DE GRANDES TAILLES

UN INTERPRÉTEUR POUR RATIONNELS DE GRANDES TAILLES


 Information sur la source

Note :
Aucune note
Catégorie :Maths & Algorithmes Classé sous :nombres rationnels, grande taille, gmp, 4 opérations, interpréteur Niveau :Débutant Date de création :05/06/2011 Date de mise à jour :06/06/2011 09:51:21 Vu / téléchargé :1 989 / 38

Auteur : pgl10

Ecrire un message privé
Site perso
Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Voici un petit logiciel qui permet d'effectuer les 4 opérations de base pour des nombres rationnels de tailles quelconques aussi grandes que l'on veut. Il utilise une variante de GMP développée par Paul Herman et décrite dans Integer.txt. Une documentation est incluse dans Opera.txt. Un exemple de fichier de commandes est fourni : fichier.txt et son emploi est prévu avec : fichier.bat. Si on fait : > u=1 alors : > v=u*a fournit la valeur actuelle de a et : > b=u/a son inverse. Pour calculer la somme de deux grands nombres rationnels A et B en programmation C++ il suffit de faire :
BigRa A, B, S;  ...  S=A;  S.additionner(B, S);

Source

  • /*******************************************************************************
  • * Opera : calculs arithmétiques avec des nombres rationnels de grande taille *
  • * On a ici les 4 opérations de base - par : pgl10 - utilisation : Opera *
  • *******************************************************************************/
  • #include "Opera.h"
  • void aide() {
  • aout("\nOpera : les seules commandes valides sont de type : \n");
  • aout("> a = 123456789 ( nombre entier de longueur et signe quelconques )\n");
  • aout("> b = 123 / 456 ( num et den de longueurs et signes quelconques. )\n");
  • aout("> n = a ? b ( où ? est l'un des opérateurs suivants : + - * / )\n");
  • aout("> exit : fin de session en mode conversationnel\n");
  • }
  • int main(int argc, char *argv[]) {
  • char var[5];
  • int fin;
  • BigRa nbr, *ptr;
  • aout("\nOpera : calculs arithmétiques avec des nombres rationnels de grande taille\n");
  • lect = 0;
  • if(argc == 2) {
  • pFile=fopen(argv[1], "r");
  • lect = 1;
  • }
  • if(lect == 0) {
  • aout("Pour le mode d'emploi consulez le fichier Opera.txt\n");
  • aout("Pour une aide immédiate entrez : aide\n");
  • }
  • initra();
  • fin = 0;
  • for(;;) {
  • fin = lire(cmd);
  • if(lect == 1) {
  • if(strcmp(cmd, cda) == 0) break;
  • strcpy(cda, cmd);
  • cout << endl << "> " << cmd << endl;
  • }
  • else if(fin != 0) break;
  • if(strcmp(cmd, "aide") == 0) {aide(); continue;}
  • if(nomvar(cmd, var, cdn) != 0) continue;
  • ptr = &nbr;
  • if(calcul(cdn, ptr) != 0) continue;
  • cout << endl;
  • nbr.afficher();
  • cout << endl;
  • ajouterra(var, nbr);
  • if(fin != 0) break;
  • }
  • cout << endl << "fin" << endl;
  • if(argc==2) {
  • fclose(pFile);
  • system("pause");
  • }
  • return 0;
  • }
/*******************************************************************************
*  Opera : calculs arithmétiques avec des nombres rationnels de grande taille  *
*  On a ici les 4 opérations de base  -  par : pgl10  -   utilisation : Opera  *              
*******************************************************************************/

#include "Opera.h"

void aide() {
    aout("\nOpera : les seules commandes valides sont de type : \n");
    aout("> a = 123456789 ( nombre entier de longueur et signe quelconques )\n");
    aout("> b = 123 / 456 ( num et den de longueurs et signes quelconques. )\n");
    aout("> n = a ? b ( où ? est l'un des opérateurs suivants : +  -  *  / )\n");
    aout("> exit : fin de session en mode conversationnel\n");
}    

int main(int argc, char *argv[]) {

    char var[5];
    int fin; 
    BigRa nbr, *ptr;

    aout("\nOpera : calculs arithmétiques avec des nombres rationnels de grande taille\n");
    lect = 0;
    if(argc == 2) {
        pFile=fopen(argv[1], "r");
        lect = 1;
    }
    if(lect == 0) {
    aout("Pour le mode d'emploi consulez le fichier Opera.txt\n");
    aout("Pour une aide immédiate entrez : aide\n");
    }
    initra();
    fin = 0;
    for(;;) {
        fin = lire(cmd);
        if(lect == 1) {
            if(strcmp(cmd, cda) == 0) break;
            strcpy(cda, cmd);
            cout << endl << "> " << cmd << endl;
        }
        else if(fin != 0) break;
        if(strcmp(cmd, "aide") == 0) {aide(); continue;}
        if(nomvar(cmd, var, cdn) != 0) continue;
        ptr = &nbr;
        if(calcul(cdn, ptr) != 0) continue;
        cout << endl;
        nbr.afficher();
        cout << endl;
        ajouterra(var, nbr);
        if(fin != 0) break;
    }
    cout << endl << "fin" << endl;
    if(argc==2) {
        fclose(pFile);
        system("pause");
    }
    return 0;
}

 Conclusion

Il y a des corrections et améliorations à faire : en particulier, peu de cas d'erreurs sont prévus et traités et listera.cpp est pricipalement en C et non en C++. Il y a aussi des suppléments de fonctions à ajouter. Mais c'est une base utilisable. On peut noter la remarquable facilité de programmation due à la variante Integer de Paul Herman.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

06 juin 2011 09:51:23 :
Petite clarification

 Sources du même auteur

Source avec Zip Source avec une capture UNE LISTE HÉTÉROGÈNE DOUBLEMENT CHAINÉE
Source avec Zip Source avec une capture POUR AFFICHER LES CARACTÈRES ACCENTUÉS SOUS WINDOWS EN MODE ...
Source avec Zip Source avec une capture CONVHTML : UN UTILITAIRE DE CONVERSION POUR FICHIERS HTML
Source avec Zip Source avec une capture AFFIMOFF : UNE VISIONNEUSE 3D AVEC PARAMÉTRISATION ET TEXTUR...
Source avec Zip Source avec une capture CRIBLE D'ERATOSTHÈNE OPTIMISÉ

 Sources de la même categorie

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture CHIFFREMENT DE VIGENERE par lajouad
Source avec Zip Source avec une capture ANALYSE SYNTAXIQUE par lajouad
Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture DESSINER UNE ARBRE BINAIRE( MODE CONSOLE): par benzarabel

 Sources en rapport avec celle ci

PROJET DE CRYPTOGRAPHIE: RSA À JEU REDUIT D'INSTRUCTION par samatarahmed
Source avec Zip Source avec une capture CRYPTOSYSTÈME ELGAMAL LIBRAIRIE GMP par louelh95
Source avec Zip Source avec une capture OP4 UN INTERPRÉTEUR POUR ENTIERS DE TRÈS GRANDE TAILLE par pgl10
Source avec Zip Source avec une capture DÉCOMPOSITION EN FACTEURS PREMIERS AVEC GMP par pgl10
Source avec Zip Source avec une capture COMPILATEUR DE PSEUDO PASCAL par CptPingu

Commentaires et avis

Commentaire de ccgousset le 07/06/2011 14:34:56

Pgl je crois que j'ai envoyé une remarque pas tres fine. Pardonne moi . En tout cas tes sources minteressent. A plus.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Comment installer la librairie GMP? [ par Kentoo ] Bonjour à tous!J'aimerais savoir Comment installer la librairie gmp? J'utilise dev-c++ et je suis sous windowspour ceux qui ne connaissent pas: http:/ GMP & Visual C++ 6 [ par malik7934 ] HELP!J'essaie de faire tourner GMP sur Windows XP avec MV C++ 6 mais sans succès !! N'y aurait-il pas quelqu'un avec un bon lien? Un tut?? Je ne comp GMP random function [ par malik7934 ] Hello!J'ai un bug bizarre... j'utilise les appels suivants pour créer un nombre au hasard:#include "gmp.h"...mpz_t prime_number, rand_n;...gmp_randsta gmp [ par vecchio56 ] Je crois que j'ai un drole de probleme avec la librairie gmp; je voudrais savoir si le programme suivant marche chez vous:http://vecchio56.free.fr/gmp NTL (pour travailler avec des nbres d'un million de chiffres voire plus...) [ par scelw ] Bonjour,J'aurais besoin de votre aide :Il existe une librairie (ou classe... quelle est la différence?) appelée NTL et qui permet de travailler avec d GMP et Dev-C++ [ par Ghee ] Premi&#232;rement bonjour! Bon... maintenant que les pr&#233;sentations sont faites attaquons le vif du sujet! J'aurais besoin de quelques indicatio gmp pour windows [ par sidina ] pour faire des calcules arithmetiques sur des grands nombres 1024 bits ... nous avons besoins d'utiliser par exemple la biblioth&#232;que gmp.h destin CRyptage RSA 2048 [ par clem0338 ] Bonjour, j'ai lu dans le forum et dans les sources qu'il existe une librairie pour les des calcules sur des "grand nombre" (GMP, PARI, ...) j'aimerais librairie gmp... [ par othland ] slt tlmsi quelqu'un d'entre vous connais un site ou je peux t&#233;l&#233;charger&nbsp; la librairie gmp , et sais comment l'integrer dans le C++. et grand nombr NTL / GMP [ par maminovadu75 ] Bonjour, je suis sous windows et j'aimerais savoir quoi choisir entre GMP et NPL j'aurais aussi besoin d'aide pour l'installation et l'utilisation .me


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,484 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales