fb:porticula NoPaste
Mehrdimensionales Array an Sub übergeben
Uploader: | Sebastian |
Datum/Zeit: | 07.01.2013 14:44:29 |
' Code-Beilage zu Forenthread:
' http://forum.qbasic.at/viewtopic.php?t=8053
'
' Getestet mit FreeBASIC 0.24.0 unter Windows 7 x64
'
' Datum: 07.01.2013, Lizenz: FBPSL
'
' Keine Gewaehrleistung fuer die inhaltliche und technische Richtigkeit.
' Verwendung ausschliesslich auf eigene Gefahr.
declare sub fuelleDatenArray (byref x as ubyte, byref y as ubyte, byref z as ubyte, zielArray() As ubyte)
declare sub zeigGanzesArrayAn (zeilenanfang as string, daten() as ubyte)
dim daten (1 to 2, 1 to 7, 1 to 5) as ubyte
' Seien a, b und c irgendwelche Koeffizienten
dim as ubyte a=2, b=4, c=3
Print "Die Koeffizienten sind:"
Print " a = " & a & ", b = " & b & ", c = " & c
print
print "Fuelle nun das Datenarray... ";
fuelleDatenArray (a, b, c, daten())
print "fertig!"
print ' Leerzeile
Print "Die Koeffizienten sind jetzt:"
Print " a = " & a & ", b = " & b & ", c = " & c
print " --> Die Werte wurden in der SUB ueberschrieben!"
print
print "Gebe das komplette Array aus:"
print
zeigGanzesArrayAn ("datenfeld", daten () )
sleep
end
sub fuelleDatenArray (byref x as ubyte, byref y as ubyte, byref z as ubyte, zielArray() As ubyte)
'Uebergebenes Array mit irgendwelchen berechneten Werten fuellen:
dim temp as uinteger
'Tipp / Beispiel zu lbound/ubound:
' lbound(array,1) = Untere Indexgrenze der 1. Array-Dimension
' ubound(array,2) = Obere Indexgrenze der 2. Array-Dimension
for i as integer = lbound(zielArray,1) to ubound(zielArray,1)
for j as integer = lbound(zielArray,2) to ubound(zielArray,2)
for k as integer = lbound(zielArray,3) to ubound(zielArray,3)
temp = x*i + y*j + z*k ' quasi Summe aus (IndexN * KoeffizientN) für alle N von 1 bis 3
if (temp > 255) then temp = 255
zielArray(i,j,k) = temp
next k
next j
next i
'Werte der Koeffizienten veraendern (moeglich, da BYREF)
x = (x+y+z)
y = x*2
z = x*3
end Sub
sub zeigGanzesArrayAn (zeilenanfang as string, daten() as ubyte)
for i as integer = lbound(daten,1) to ubound(daten,1)
for j as integer = lbound(daten,2) to ubound(daten,2)
print zeilenanfang & "(" & i & "," & j & ") = { ";
for k as integer = lbound(daten,3) to ubound(daten,3)
print str(daten(i,j,k));
if (k < ubound(daten,3)) then print ", ";
next k
print " }"
next j
next i
end sub