Page 1 sur 2

Lecture des données (version 1.66 et version 1.94)

Posté : mar. 11 mai 2010, 20:35
par DGH
Bonsoir,

Ma question concerne la lecture des données. J'ai mes données sont sont stockées dans un fichier nommé : "MesDonnees.dat"
    1 5
    2 11
    3 7
    4 5
    7 9

Code : Tout sélectionner

// pour la lecture
file fichD=line(input("MesDonnees.dat"));
int[][] a=dimension(fichD,0,0);
a=transpose(a);
int[] X=a[0] , Y =a[1];


Avec la version 1.66 le code fonctionne alors qu'avec la version 1.94, j'ai le message d'erreur :
variable line n'est pas définie . J'ai besoin de quelqu'un (qui a la version 1.94) de tester pour voir s'il a le même problème que moi.

Merci
D.GH

Re: Lecture des données (version 1.66 et version 1.94)

Posté : mar. 11 mai 2010, 20:59
par OG
Bonsoir

Il y a certainement eu du changement. Je suis allé lire un peu la doc (si si c'est possible)
Voici un code qui marche (j'espère)

Code : Tout sélectionner

// pour la lecture
file fichD=input("MesDonnees.dat");
int[][] a=fichD.dimension(0,2);
a=transpose(a);
int[] X=a[0] , Y =a[1];
write (X,Y);


Cordialement
O.G.

Re: Lecture des données (version 1.66 et version 1.94)

Posté : mar. 11 mai 2010, 21:12
par GM
Réponse rapide (sans avoir pris le temps de tester l'exemple proposé) ... uniquement pour dire que je me suis aperçu récemment qu'il y a des

Code : Tout sélectionner

line(input(...))
à remplacer par

Code : Tout sélectionner

input(...).line()
.
Je m'en suis aperçu pour les exemples suivants mais je n'ai pas encore pris le temps de voir si les exemples de cette galerie étaient à réactualiser. Je le ferai quand je trouverai un peu de temps.

Re: Lecture des données (version 1.66 et version 1.94)

Posté : mer. 12 mai 2010, 11:27
par DGH
Merci pour la réponse. Avec la version 1.94, le code suivant fonctionne.

Code : Tout sélectionner

file fichD=input("MesDonnees.dat").line();
int[][] a=fichD.dimension(0,0);
a=transpose(a);
int[] X=a[0] , Y =a[1];
write (X,Y);


Une question : Lors de la compilation est-il possible de récupérer la version d'Asymptote ? Quelque chose de type :

Code : Tout sélectionner

 si (version==1.66)
     file fichD=line(input("MesDonnees.dat"));
     sinon
       file fichD=input("MesDonnees.dat").line();

Merci
D.GH

Re: Lecture des données (version 1.66 et version 1.94)

Posté : mer. 12 mai 2010, 11:55
par GM
DGH a écrit :Lors de la compilation est-il possible de récupérer la version d'Asymptote ?

Figure asymptote e110cb916b9f43c9ee22abd3c08a050b
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. size(200);
  2. draw((0,0){dir(-45)}..{dir(45)}(10,0),red);
  3. draw((5,1)--(5,3));
  4. dotfactor=10;
  5. dot((0,5));
  6. dot((10,5));
  7. label("Cr\'e\'e avec Asymptote "+version.VERSION,point(S),2S);
  8. shipout(bbox(5mm,gray));

Re: Lecture des données (version 1.66 et version 1.94)

Posté : mer. 12 mai 2010, 12:40
par DGH
Merci Gaétan pour ce Joli dessin.

Toujours pour la lecture des données, comment lire un fichier de données qui est un mélange de réel , entier et string? Par exemple :

Jean 1.2 Paris 14000
Olivier 1.7 Rennes 12041
Ga\'etan 1.9 Strasbourg 21045
Alex 1.3 Lille 10047

Merci

Re: Lecture des données (version 1.66 et version 1.94)

Posté : mer. 12 mai 2010, 12:46
par GM
C'est une bonne question... dont je n'ai pas encore la réponse du fait que je n'ai pas encore eu à l'utiliser mais je vais y réfléchir et faire des tests, ce soir... si personne ne donne une solution avant.

Re: Lecture des données (version 1.66 et version 1.94)

Posté : mer. 12 mai 2010, 15:24
par OG
DGH a écrit :Merci Gaétan pour ce Joli dessin.

Toujours pour la lecture des données, comment lire un fichier de données qui est un mélange de réel , entier et string? Par exemple :

Jean 1.2 Paris 14000
Olivier 1.7 Rennes 12041
Ga\'etan 1.9 Strasbourg 21045
Alex 1.3 Lille 10047

Merci


Cela te convient-il ?

Code : Tout sélectionner

file fichD=input("donnee.txt").line().word();
string[] nom, ville;
int [] distance;
real [] dreel;
while(true) {
  nom.push(fichD);
  dreel.push(fichD);
  ville.push(fichD);
  distance.push(fichD);
  if(eof(fichD)) break;
}

write(nom);
write(dreel);
write(ville);
write(distance);


Sinon il serait plus facile d'avoir les données par ligne. Tu lis la 1ère ligne : tableau de "string", etc

O.G.

Re: Lecture des données (version 1.66 et version 1.94)

Posté : mer. 12 mai 2010, 16:15
par DGH
OG a écrit :Cela te convient-il ?
O.G.

Parfait

D.GH

Re: Lecture des données (version 1.66 et version 1.94)

Posté : mer. 12 mai 2010, 23:59
par GM
Je ne comprends pas trop l'intérêt du while(true) puis du break.

Cela me semble plus simple ainsi :

Code : Tout sélectionner

file fichD=input("donnees.txt").line().word();
string[] nom, ville;
int [] distance;
real [] dreel;
while(eof(fichD)!=true) {
  nom.push(fichD);
  dreel.push(fichD);
  ville.push(fichD);
  distance.push(fichD);
}
write(nom);
write(dreel);
write(ville);
write(distance);