Das OFFIZIELLE PROFAN SUPPORT FORUM
Einsteigerfragen
PROFAN-Programmierung
Helfer & Tools
Anregungen & Vorschläge
PROFAN-NEWS
Die Regeln!
1 - Einsteigerfragen

 Neues Thema  |  Zur Übersicht  |  Suchen  |  Einloggen   Neuerer Beitrag  |  Älteres Thema 
 mehrdimensionale Arrays
Autor: Annemaria Matz (185.44.151.---)
Datum:   16.11.15 20:53

Hallo an alle,

ich bin soeben dabei mich mit Arrays auseinander zu setzen.
eindimensional ist kein Problem.

DECLARE Matrix1%[3],i%,zahl%,Matrix2%[3],zahl2%,j%

rem E I N L E S E N
let i%=1
let j%=1
WHILE i%<4
print "Bitte Zahl ";i%;" eingeben : "
input zahl%
let Matrix1%[i%]=zahl%
let i%=i%+1
ENDWHILE
j%=1
WHILE j%<4
print "Bitte Zahl ";j%;" eingeben : "
input zahl2%
let Matrix2%[j%]=zahl2%
let j%=j%+1
ENDWHILE

rem A U S G E B E N
cls

let i%=1
let j%=1
WHILE ((i%<4) and (j%<4))
print Matrix1%[i%],Matrix2%[j%]
let i%=i%+1
let j%=j%+1
ENDWHILE

waitkey
end

Jetzt wollte ich dieses Programm mit einem zweidimensionalen Array umsetzen.
Aber ich verstehe nicht wie man zweidimensionale Arrays mit Inhalt füllt.

Anbei der Programmcode den ich bisher habe.
Kann mir das jemand erklären? In der Profan-Hilfe finde ich nur, wie Arrays declariert werden aber nicht wie man sie füllt.

declare Matrix%[3,3],i%,j%,zahl1%,zahl2%

rem E I N L E S E N
let i%=1
let j%=1
WHILE ((i%<4) and (j%<4))
print "Bitte Zahl ";i%;" eingeben : "
input zahl1%
print "Bitte Zahl ";j%;" eingeben : "
input zahl2%
let Matrix%[i%]=zahl1%
let Matrix%[j%]=zahl2%
let i%=i%+1
let j%=j%+1
ENDWHILE

rem A U S G E B E N
cls
let i%=1
let j%=1
WHILE i%<4
print Matrix%[i%],Matrix%[j%]
let i%=i%+1
let j%=j%+1
ENDWHILE

waitkey
end



Beitrag beantworten
 
 Re: mehrdimensionale Arrays
Autor: Volkmar Göritz (---.dynamic.qsc.de)
Datum:   16.11.15 21:36

Stelle Dir das eindimensionale Array als Liste vor, jedes Element ist eine Zeile. Ein zweidimensionales Array wäre dann eine Tabelle mit Zeilen und Spalten. Oder ein Schachbrett, bei dem jedes Element ein Spielfeld bezeichnet:
Declare Schach[7,7]
Erste Reihe des Schachbrettes wäre als Schach[0,0] bis Schach[0,7]
Arrays sind also immer 0-basiert, Du hast bei Dir mit 1 angefangen und damit ein Element verschenkt ;-)

Dein Code für ein zweidimensionales Array mal angepaßt (und 0-basiert)

declare Matrix%[3,3],i%,j%,zahl1%
 
 rem E I N L E S E N
 let i%=0
 WHILE (i%<4)
   j% = 0
   WHILE j% < 4
     print "Bitte Zahl in Zeile ";i%;" und Spalte ";j%; " eingeben : "
     input zahl1%
     let Matrix%[i%,j%]=zahl1%
     let j% = j% + 1
   ENDWHILE
   let i%=i%+1
 ENDWHILE
 
 rem A U S G E B E N
 cls
 let i%=0
 WHILE i%<4
   let j%=0
   WHILE j%<4
     print Matrix%[i%,j%];" ";
     let j%=j%+1
   ENDWHILE
   print
   let i%=i%+1
 ENDWHILE
 
 waitkey
 end


Gruß Volkmar



Beitrag beantworten
 
 Re: mehrdimensionale Arrays
Autor: RGH (---.hsi.kabel-badenwuerttemberg.de)
Datum:   16.11.15 21:39

Hallo Annemaria,

ein zweidimensionales Array, bzw. eine solche Matrix musst Du Dir als eine Fläche mit Koordinaten vorstellen:
 +--0--+--1--+--2--+--3--+- i
 |     |     |     |     |
 0[0,0]|[0,1]|[0,2]|[0,3]|
 |     |     |     |     |
 +-----+-----+-----+-----+
 |     |     |     |     |
 1[1,0]|[1,1]|[1,2]|[1,3]|
 |     |     |     |     |
 +-----+-----+-----+-----+
 |     |     |     |     |
 2[2,0]|[2,1]|[2,2]|[2,3]|
 |     |     |     |     |
 +-----+-----+-----+-----+
 |     |     |     |     |
 3[3,0]|[3,1]|[3,2]|[3,3]|
 |     |     |     |     |
 +-----+-----+-----+-----+
 |
 
 j
 

Jedes der Felder der Fläche ist ist durch ein Koordinatenpaar eindeutig gekennzeichnet. Um einem solchen Feld einen Wert zuzuweisen, musst Du dessen Koordinaten (in eckigen Klammern, mit Komma getrennt) angeben, ebenso beim Auslesen. Ein mit 3,3 dimensioniertes Array hat 4 * 4 = 16 Felder, da die Koordinaten jeweils bei 0 beginnen. Im folgenden Beispiel werden aber, ebenso wie bei Dir, nur jeweils die Koodinaten 1 bis 3 genutzt:
 declare Matrix%[3,3],i%,j%,zahl%
 
 rem E I N L E S E N
 let i%=1
 WHILE i%<4 
   let j% = 1
   WHILE j%<4
     print "Bitte Zahl [";i%;",";j%;"] eingeben : "
     input zahl%
     let Matrix%[i%,j%] = zahl%
     let j% = j%+1
   ENDWHILE  
   let i% = i%+1
 ENDWHILE
 
 rem A U S G E B E N
 cls
 let i% = 1
 WHILE i%<4 
   let j% = 1
   WHILE j%<4
     print Matrix%[i%,j%],
     let j% = j%+1
   ENDWHILE  
   print
   let i% = i%+1
 ENDWHILE
 
 waitkey
 end
 

Ich hoffe, ich habe Dir hiermit geholfen.

Gruß
Roland

Offizielle Homepage: http://www.xprofan.de
Der neue PROFAN-FAN-SHOP: http://www.spreadshirt.de/shop.php?sid=9330
Das kostenlose Kartenspiel: http://www.rgh-soft.de/sprace/sprace.htm

Beitrag beantworten
 
 Re: mehrdimensionale Arrays
Autor: Annemaria Matz (185.44.151.---)
Datum:   16.11.15 21:55

Hallo Roland,

danke für die anschauliche Erklärung - hab es verstanden.
Der Anfangswert bei 1 ist schon richtig in der Mathematik fangen Matritzen auch in der 1. Spalte, 1. Zeile an.

Beitrag beantworten
 
 Re: mehrdimensionale Arrays
Autor: Annemaria Matz (185.44.151.---)
Datum:   16.11.15 21:59

Danke Volkmar für die Erklärung und Hilfe.

Ich weiß das ich durch den Anfangswert 1 eine Stelle verschenke aber in der Mathematik fängt man halt bei 1 an zu zählen und nicht wie in der Informatik bei 0.

Beitrag beantworten
 
 Re: mehrdimensionale Arrays
Autor: Heinz Brill (---.dip0.t-ipconnect.de)
Datum:   17.11.15 17:01

Macht ja nix.
Das 0. Element kann sie ja verschenken, wenn sie
dann auch bedenkt, das Array um 1 größer zu machen,
wie geplant.

H.Brill
XProfan X4 + FreeProfan

Beitrag beantworten
 
 Re: mehrdimensionale Arrays
Autor: Stephan Sonneborn (---.dip0.t-ipconnect.de)
Datum:   21.11.15 06:00

Hallo Annemaria, hallo Heinz,

ein Array in XProfan hat immer n+1 Elemente je Zeile und m+1 Elemente je Spalte, wenn es über DECLARE Matrix%[n,m] definiert wird.

Das 0te Element ist quasi ein "Bonus".

Man muss also nicht die Größe eines Arrays eins größer machen, als man für die Matrix braucht.

Im Gegenteil, man hat mehr Elemente zur Verfügung, als man eigentlich braucht: ich nutze den 0ten Eintrag gerne um Startwerte, Standardwerte o.ä. zu speichern.

Beispiel:
ein Array Matrix%[3] hat 3 + 1 = 4 Elemente
eine zweidimensionale Matrix Matrix2%[3,4] sogar
(3+1) x (4+1) = 20 Elemente

0,0; 0,1; 0,2; 0,3; 0,4
1,0; 1,1; 1,2; 1,3; 1,4
2,0; 2,1; 2,2; 2,3; 2,4
3,0; 3,1; 3,2; 3,3; 3,4

Gruß Stephan

Schöne Grüße aus Wittgenstein von
Stephan

Programmierumgebung:
| XProfan 11.2 | Win7 32 Bit | WinXP Home | AMD Athlon 2400+ | Intel P4 3,4 GHz |

Beitrag beantworten
 Foren-Liste  |  Baumstruktur   Neuerer Beitrag  |  Älteres Thema 


 Foren-Liste  |  Zur Registrierung 
 Benutzerlogin
 Benutzername:
 Passwort:
 Login-Daten speichern:
   
 Passwort vergessen?
E-Mail-Adresse oder Username unten eingeben. Dann wird Dir per e-Mail ein neues Passwort zugeschickt.

phorum.org