Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   FreePascal (https://www.delphipraxis.net/74-freepascal/)
-   -   Funktion: Zahl in Matrix suchen (https://www.delphipraxis.net/207147-funktion-zahl-matrix-suchen.html)

markush 28. Feb 2021 11:05

Funktion: Zahl in Matrix suchen
 
Hallo zusammen,

ich hoffe, ich bin jetzt nicht im komplett falschen Forum?! Falls doch bitte einfach verschieben.
Wir haben in der Schule eine Aufgabe zum Durchsuchen einer 3x3 Matrix nach einer bestimmten Zahl bekommen. Die Musterlösung sieht so aus:
Code:
type
 tyMat = array[0..5, 0..5] of 0..6;
 tIdx = 0..5;
 tWert = 1..9;

Das sind die Definitionen, zur Überprüfung der Matrix sieht die Lösung so aus:
function chk(var M:tyMat; z,s:tIdx, w:tWert);
.
.
.(Schleife i von 0 bis 9)
if ( M [ (z div 3) * 3 + (i mod 3) ] [ (s div 3) * 3 + (i div 3) ] = x ) then
 function:=false;
.
.
Ich versteh einfach die Berechnung der Matrix nicht???? Könnt ihr mir dabei helfen?

Gruß - Markus

himitsu 28. Feb 2021 12:13

AW: Funktion: Zahl in Matrix suchen
 
Rechne dir doch einfach mal mit den Werten von ( i = 0 bis 9 ) die entstehenden Koordinaten durch
und schau was dabei raus kommt?

zeichne dir eine Matrix (Tabelle mit X und Y von 0 bis 6 Spalten/Zeilen) auf ein Blatt und schreibe dann jeweils dein i dort rein, was die berechneten Koordinaten ergeben.




z und s werden auf "ganze 3er" gerundet

(z div 3) * 3 = auf 0, 3 oder 6 runden



und dann geht i von diesen Koordinaten jeweils alle 3x3 Felder nach rechts/unten durch.

0 bis 9 ist übertrieben, denn das erste Feld ist bei dieser Berechnung doppelt (da hat der Lehrer wohl nicht ganz aufgepasst)
0 bis 8 sind 9 Felder

( Schleife i von 0 bis 8 )
( M [ ... + i mod 3 ] [ ... + i div 3 ] )
entspricht also
(Schleife i von 0 bis 2)
(Schleife k von 0 bis 2)
( M [ ... + i ] [ ... + k ] )

markush 1. Mär 2021 07:32

AW: Funktion: Zahl in Matrix suchen
 
Vielen Dank für deine Ausführungen! Ich werde mal die Matrix aufzeichnen.
Die Berechnung ist also so (kompliziert) aufgebaut, um universal zu sein oder? Weil ich könnte das ja auch einfach mit fest vorgegebenen Variablen durchlaufen?

himitsu 1. Mär 2021 08:39

AW: Funktion: Zahl in Matrix suchen
 
Zitat:

Zitat von markush (Beitrag 1484118)
Die Berechnung ist also so (kompliziert) aufgebaut, um universal zu sein oder?

Oder damit ihr was zum Lernen habt. :zwinker:

Aber nein, es kommt tatsächlich öffters vor, dass man Dinge zusammenfasst, also z.B. das "eine Schleife" statt "Zwei".
* einmal spart es eine Verschachtelungstieft
* vor allem spart es 50% Speicher (eine Variale statt zwei) .......... gaaaaaaaaaaaanz früher war sowas mal sehr wichtig (außerdem sind wir faul und machen gern weniger)
* bei Debuggen kann man es so oder so sehen ... hier "man sieht die gesamtzahl" gegen "man sieht genau wo man ist" (muß aber rechnen wieviel es noch ist)
* aber auch wenn man Code von einer Schleife auf "Einzelausführung" umbaut und das dann iterativ oder rekursiv aufruft, da ist "eine Variable" womöglich auch einfacher

markush 1. Mär 2021 09:24

AW: Funktion: Zahl in Matrix suchen
 
Erstmal danke dir für dein Geduld und Hilfe :thumb:

Ich bestimme also erst den Eckpunkt (durch z und s) und taste dann im 3x3 Raster (durch Schleife mit i) diesen Quadranten nach der gesuchten Zahl ab!?!
Eigentlich schon fast a bisserl genial 8-) - wenn man es verstanden hat!
Hätte ich ohne deine Hilfe nicht gecheckt.....:?

Ich hätte das vermutlich mit zwei oder Schleifen gelöst :lol:


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz