Data update
This commit is contained in:
parent
8e4e15fa56
commit
72eb4943cb
1853 changed files with 35514 additions and 9441 deletions
|
|
@ -0,0 +1,121 @@
|
|||
Module Matrix_Transpose {
|
||||
dim a(3,4) as long, b()
|
||||
a(0,0)=1,2,3,4
|
||||
a(1,0)=5,6,7,8
|
||||
a(2,0)=9,10,11,12
|
||||
open "out.txt" for output as #f
|
||||
showarray("a()", &a())
|
||||
b()=@transpose(a())
|
||||
showarray("transpose to", &b())
|
||||
dim a(3,1)
|
||||
a(0,0)=1,2,3
|
||||
showarray("a()", &a())
|
||||
b()=@transpose(a())
|
||||
showarray("transpose to", &b())
|
||||
|
||||
// Using arrays with square brackets:
|
||||
long a[2][0]
|
||||
// second dimension adjust also from items (for each sub array)
|
||||
a[0][0]=1,2,3,4
|
||||
a[1][0]=5,6,7,8
|
||||
a[2][0]=9,10,11,12
|
||||
showarray2("a[][]", a)
|
||||
// transpose has to know the type to define the new one
|
||||
b=@transposeLong(a)
|
||||
showarray2("transpose to", b)
|
||||
long c[2][0]
|
||||
c[0][0]=1
|
||||
c[1][0]=2
|
||||
c[2][0]=3
|
||||
showarray2("c[]", c)
|
||||
b=@transposeLong(c)
|
||||
showarray2("transpose to", b)
|
||||
' we can use Variant type as return type
|
||||
d=@transposeAny(b)
|
||||
showarray2("transpose to", d)
|
||||
close #f
|
||||
win "out.txt" ' open out.txt from default application for *.txt files
|
||||
|
||||
sub showarray(title$, &a())
|
||||
print #f, title$+": (";
|
||||
local boolean z=dimension(a(),1,1)=0
|
||||
for i=0 to dimension(a(),1,1)
|
||||
if i>0 then print #f, ", ";
|
||||
print #f, "(";
|
||||
if dimension(a(),2,1)>1 then
|
||||
for j=0 to dimension(a(),2,1)-1
|
||||
print #f, a(i, j)+", ";
|
||||
next
|
||||
print #f, a(i, j)+")";
|
||||
else
|
||||
print #f, a(i, 0)+",)";
|
||||
end if
|
||||
next
|
||||
if z then print #f, ",)" else print #f, ")"
|
||||
end sub
|
||||
sub showarray2(title$, a as *Long)
|
||||
' handle with one or zero sub arrays
|
||||
print #f, title$+": [";
|
||||
for i=0 to len(a)-1
|
||||
if i>0 then print #f, ", ";
|
||||
if valid(len(a[i])) then
|
||||
print #f, "[";
|
||||
if len(a[i])>1 then
|
||||
for j=0 to len(a[i])-2
|
||||
print #f, a[i][j]+", ";
|
||||
next
|
||||
else
|
||||
j=0
|
||||
end if
|
||||
print #f, a[i][j]+"]";
|
||||
else
|
||||
print #f, a[i];
|
||||
end if
|
||||
next
|
||||
print #f, "]"
|
||||
end sub
|
||||
function transposeLong(a as *long)
|
||||
Local long R=Len(a)-1 ' upper bound dim 1
|
||||
Local long L=len(a[0])-1 ' upper bound dim 2
|
||||
local long b[L][R]
|
||||
for i=0 to L
|
||||
for j=0 to R
|
||||
b[i][j]=a[j][i]
|
||||
next
|
||||
next
|
||||
=b
|
||||
End Function
|
||||
function transposeAny(a)
|
||||
if not valid(a[0][0]) then Error "Wrong Type"
|
||||
Local long R=Len(a)-1 ' upper bound dim 1
|
||||
Local long L=len(a[0])-1 ' upper bound dim 2
|
||||
local Variant b[L][R]
|
||||
for i=0 to L
|
||||
for j=0 to R
|
||||
b[i][j]=a[j][i]
|
||||
next
|
||||
next
|
||||
=b
|
||||
End Function
|
||||
function transpose(a as array)
|
||||
// we use a as pointer to array
|
||||
// if we use transpose(a()) we get a copy on a()
|
||||
// so we make one copy only
|
||||
// copy a to a()
|
||||
Local a()
|
||||
a()=a
|
||||
push &a
|
||||
Read new &b()
|
||||
Local long R=dimension(a(),1,1) ' upper bound dim 1
|
||||
Local long L=dimension(a(),2,1) ' upper bound dim 2
|
||||
' this is a redim, and preserve the array type also
|
||||
Dim a(L+1,R+1)
|
||||
for i=0 to L
|
||||
for j=0 to R
|
||||
a(i,j)=b(j, i)
|
||||
next
|
||||
next
|
||||
=a()
|
||||
End Function
|
||||
}
|
||||
Matrix_Transpose
|
||||
Loading…
Add table
Add a link
Reference in a new issue