| |
|
|
p.specht
| cela Thema "Matrix aus Excel-CSV mathématique richtig indexiert einlesen" grenzt scheinbar à une Kunstform: qui mathématique korrekte Indexierung dans einer Matrix lautet bekanntlich M_Zeilenindex,Spaltenindex, et beide Indizes commencer avec 1. cela wäre aussi dans XProfan im Prinzip realisierbar, quoique ensuite à cause de des Beginns chez 0 une gewisse Platzverschwendung stattfinden serait. chez berechneten Indizes dans Assembler mais wäre cela geradezu une catastrophe, c'est pourquoi wäre je personnelle geneigt, de zéro weg trop indizieren:
Déclarer M![Zeilenanzahl-1,Spaltenanzahl-1] avec Aufruf: M![la ligne-1,Spalte-1]
Größere Matrizen écrit on besser juste dans Excel (ou bien Calc de OpenOffice, ou bien dans LibreOffice) et exportiert cet comme CSV avec Spaltentrenner ´|´ et Zeilentrenner (z.B. ´;´). un direktes Einlesen aus qui Dossier selbst voulais mir bisher pas gelingen, beide Programme verwenden Kompressionsalgorithmen. Beim Einlesen peux on mais wenigstens juste qui Beschreibung dans forme de Zeilen- et Spaltenüberschriften loswerden, qui chez qui Berechnung dans XProfan de toute façon seulement embêtant wären (Wohlgemerkt, und dir naturellement um Operationen, qui cela Tabellenprogramm selbst pas beherrscht, etwa Spannbaumoptimierung etc.)
Aus technischen Trouvé landen eh bien qui sur une bestimmte konstante la ligne laufende Spaltenindexe (Im Volksmund "Zeilenweises einlesen" genannt) NICHT hintereinander im grenier! XProfan, mais z.B. aussi Pascal et Fortran, tenir Arrays SPALTENWEISE im grenier: seulement wird qui ganze "Nullte Spalte" lire, ensuite qui ganze "Spalte 1" usw. c'est pour Assembler GUT, weil qui Spaltenelemente ensuite pour Operationen gemeinsam im schellen Cache gehalten volonté peut.
qui Übersetzung qui Indizes dans Speicherplatz-Adressen allez ensuite relativ simple: Basisadresse qui Statisch definierten Matrix: Addr(M![0,0]) Laufindex = (Mathematischer_Spaltenindex-1)*Zeilenanzahl + (Mathematischher_Zeilenindex-1) Adressversatz = Laufindex * 8
renversé gilt: Mathematischer_Spaltenindex = Laufindex \ Zeilenanzahl + 1 Mathematischer_Zeilenindex = (Laufindex mod Zeilenanzahl) + 1
Titre de la fenêtre "Excel-Matrix CSV-Export mathématique korrekt indexiert einlesen"
Fenêtre Style 24:CLS:font 2
Déclarer data$,tst$[],zl$[],n&,m&
data$="Tabelle|Über B1|Über C1|Über D1;"+\
"Seite A1|11|12|13;"+\
"Seite A2|21|22|23;"+\
"Seite A3|31|32|33;"+\
"Seite A4|41|42|43;"+\
"Seite A5|51|52|53"
tst$[]=explode(data$,";"):n&=sizeof(tst$[])-1
clear zl$[]:zl$[]=Explode(tst$[1],"|"):m&=sizeof(zl$[])-1
declare M![n&-1,m&-1],i&,j&
Whileloop 0,n&-1:i&=&Boucle
clear zl$[]:zl$[]=Explode(tst$[i&+1],"|"):m&=sizeof(zl$[])-1
whileloop 0,m&-1:j&=&Boucle
M![i&,j&]=val(zl$[j&+1])
endwhile
endwhile
Set("Décimal",1)
imprimer "Numerischen partie comme Float ";n&;" X ";m&;"-Matrix lire:\n"
Whileloop 0,n&-1:i&=&Boucle
whileloop 0,m&-1:j&=&Boucle
Imprimer M![i&,j&],
endwhile:imprimer
endwhile:imprimer
waitinput
end
|
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 26.05.2021 ▲ |
|
|
|