AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Funktion: Zahl in Matrix suchen

Ein Thema von markush · begonnen am 28. Feb 2021 · letzter Beitrag vom 1. Mär 2021
Antwort Antwort
markush

Registriert seit: 28. Feb 2021
3 Beiträge
 
#1

Funktion: Zahl in Matrix suchen

  Alt 28. Feb 2021, 12:05
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#2

AW: Funktion: Zahl in Matrix suchen

  Alt 28. Feb 2021, 13:13
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 ] )
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (28. Feb 2021 um 13:16 Uhr)
  Mit Zitat antworten Zitat
markush

Registriert seit: 28. Feb 2021
3 Beiträge
 
#3

AW: Funktion: Zahl in Matrix suchen

  Alt 1. Mär 2021, 08:32
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?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#4

AW: Funktion: Zahl in Matrix suchen

  Alt 1. Mär 2021, 09:39
Die Berechnung ist also so (kompliziert) aufgebaut, um universal zu sein oder?
Oder damit ihr was zum Lernen habt.

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
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
markush

Registriert seit: 28. Feb 2021
3 Beiträge
 
#5

AW: Funktion: Zahl in Matrix suchen

  Alt 1. Mär 2021, 10:24
Erstmal danke dir für dein Geduld und Hilfe

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 - wenn man es verstanden hat!
Hätte ich ohne deine Hilfe nicht gecheckt.....

Ich hätte das vermutlich mit zwei oder Schleifen gelöst
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:00 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