 |
Apprendre Maple Site dédié au logiciel de calcul formel Maple
|
Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
trivecteur
Inscrit le: 02 Oct 2006 Messages: 8
|
Posté le: 23 Mar 2007 15:36 Sujet du message: Lire et ecrire dans un fichier |
|
|
Bonjour,
J'ai besoin de faire le produit de deux entiers de 100.000 chiffres décimaux chacun. Bien sûr, ça ne passe pas dans le GUI de Maple.
Quelqu'un qui aurait déjà fait de la lecture/écriture dans un fichier pourrait me dire comment on fait ça ?
D'après l'aide de Maple, je suppose qu'il faut faire un fopen des fichiers qui contiennent les facteurs, faire un fscanf avec le format %d et écrire le résultat dans un fichier avec un pfrintf, bon mais j'aimerais quelque chose de plus précis ?
Un grand merci à celui qui me donnera une réponse et m'aura fait ainsi gagner beaucoup de temps.
Trivecteur |
|
Revenir en haut de page |
|
 |
ALS
Inscrit le: 11 Sep 2006 Messages: 647
|
Posté le: 23 Mar 2007 18:52 Sujet du message: |
|
|
Bonjour, voyez du côté du package FileTools qui contient bon nombre d'outils pour lire et écrire dans des fichiers. |
|
Revenir en haut de page |
|
 |
trivecteur
Inscrit le: 02 Oct 2006 Messages: 8
|
Posté le: 24 Mar 2007 10:29 Sujet du message: L'aide de Maple est nulle |
|
|
Bon, je donne la méthode par laquelle j'y suis parvenu, peut-être que ça aidera quelqu'un qui lirait les archives du forum, je me souviens d'avoir galéré à comprendre comment marchait l'écriture dans un fichier sous Maple.
Le but était donc le suivant : lire des données numériques dans un ou plusieurs fichiers texte, faire traiter les données par Maple et éventuellement, renvoyer le(s) résultat(s) du traitement dans un fichier texte.
Dans mon cas, multiplier deux grands nombres placés resp. dans les fichiers facteur1.txt et facteur2.txt placés dans le répertoire E:/toto (je suis sous Windows). Voici ce que ça donne :
>restart;
> a:=readdata("E:\\toto\\facteur1.txt",integer,1):
> b:=readdata("E:\\toto\\facteur2.txt",integer,1):
> sortie := fopen("E:\\toto\\produit.txt",WRITE,TEXT):
> fprintf(sortie,%d,a[1]*b[1]):
> fclose(sortie):
Quelques sommaires explications mais certainement plus claires que la bouillie que propose l'aide (?!) de Maple qui est d'une nullité totale (malgré tout ce qu'on en dit).
Pour lire les données numériques, on utilise la commande readdata qui va lire dans un fichier dont l'adresse est donnée en argument et qui va retourner un tableau au sens de Maple, ce qui permet d'accéder aux données et de les faire traiter par Maple.
Pour écrire des données dans un fichier (ce qui peut être fait independamment de la lecture dans un fichier) , le principe est le suivant :
1) on ouvre le fichier avec la commande fopen qui prend entre autres pour argument l'adresse du fichier (ci-dessus c'est E:/toto/produit.txt). L'ouverture est transparente pour l'utilisateur, ça n'ouvre pas son éditeur de textes ! l'ouverture est une opération interne a Maple.
2) Pour écrire dans le fichier ouvert au 1), on utilise la commande fprintf dont la syntaxe est vraiment merdique (il faut donner un format en argument, genre %d pour indiquer un nombre à écrire en décimal), si on a déjà fait des entrées-sorties en C, ça aide, en particulier pour les chaînes de caractères, les caractères d'échappement (les doubles slash dans les adresses de l'exemple ci-dessus) etc.
3) on fait fermer le fichier par Maple avec la commande fclose.
Sinon, Maple sait multiplier instantanément deux entiers de 100.000 chiffres chacun, c'est déjà ça.
Trivecteur |
|
Revenir en haut de page |
|
 |
trivecteur
Inscrit le: 02 Oct 2006 Messages: 8
|
Posté le: 04 Avr 2007 19:46 Sujet du message: Re: L'aide de Maple est nulle |
|
|
trivecteur a écrit: |
> a:=readdata("E:\\toto\\facteur1.txt",integer,1):
> b:=readdata("E:\\toto\\facteur2.txt",integer,1):
> sortie := fopen("E:\\toto\\produit.txt",WRITE,TEXT):
|
Puisque je suis encore sur ces questions, je me rends compte qu'on n'est pas obligé de donner l'adresse complète du fichier à lire (ou écrire), il suffit si le fichier est dans le même répertoire que le fichier Maple courant, de donner le nom du fichier sans préciser son adresse complète, ainsi ci-dessus, ça donnerait :
> a:=readdata("facteur1.txt",integer,1):
Trivecteur |
|
Revenir en haut de page |
|
 |
|
|
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum
|

Développé par phpBB © 2001, 2006 phpBB Group
Traduction par : phpBB-fr.com
Apprendre Maple - ©
- Alain Le Stang - Navigation optimisée pour une résolution 1024 x 768.
|