Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => Delphi => Konuyu başlatan: z - 02 Temmuz 2006, 11:36:37

Başlık: 2 boyutlu matrislerin function içinden kullanımı
Gönderen: z - 02 Temmuz 2006, 11:36:37
A: array [0..100] of array [0..100] of byte;
B: array [0..100] of array [0..100] of byte;

Seklinde tanimlinmis  100x100 boyutunda Global tanimli A ve B matrislerimiz olsun.

for i:=0 to 100 do begin A=0; B=0; end;

gibi bir islemi yapmak yerine A,B,C,D,E gibi diger matrislerde de kullanabilmek icin bu islemi fonksiyon seklinde yazmak isteyelim.

Fonksiyonumuzun adi  kosegen olsun.

Kosegen(A) gibi bir kullanimla A matrisinin satir sutunlarini 0 ile dolsun.

Bu fonksiyona matris ismini nasil gonderecegimi beceremedim.

Yardimci olabilirmisiniz?
Başlık: 2 boyutlu matrislerin function içinden kullanımı
Gönderen: SpeedyX - 02 Temmuz 2006, 11:55:34
function bizimki(const A: array of Real): Real;
gibi birseyler vardi. Bu olmaz mi?
Başlık: 2 boyutlu matrislerin function içinden kullanımı
Gönderen: z - 02 Temmuz 2006, 12:08:36
Hocam fonksiyona matrisle ilgili oyle bir isim yollamaliyimki fonksiyon icinde o isimin pesine
Başlık: 2 boyutlu matrislerin function içinden kullanımı
Gönderen: SpeedyX - 02 Temmuz 2006, 12:55:56
dizinin uzunlugunu bulan fonksiyon kullanmak yerine dizinin uzunlugunu parametre olarak mi bildirmek istiyorsun?
Başlık: 2 boyutlu matrislerin function içinden kullanımı
Gönderen: z - 02 Temmuz 2006, 13:23:45
A: array [0..100] of array [0..100] of byte;
B: array [0..100] of array [0..100] of byte;
C: array [0..100] of array [0..100] of byte;
D: array [0..100] of array [0..100] of byte;
E: array [0..100] of array [0..100] of byte;
F: array [0..100] of array [0..100] of byte;

Seklinde tanimlinmis 100x100 boyutunda Global tanimli matrislerim olsun.

Herhangi iki matrisi toplayıp herhangi bir matrise atayan örnek işlemi program içinde aşağıdaki gibi yazarız.


Örneğin C=A+B matris işlemi için kodlama yapalım.

for y:=0 to 100 do
  begin
     for x:=0 to 100 do
        begin
            C[x][y]:=A[x][y]+B[x][y]
        end;
  end;


Aynı şekilde, D ve E matisini toplayıp A'ya atamayı da istersek bu kez, yukarıdaki program parçacığını tekrardan yeni değişkenlere göre düzenleyip yazmamız gerekir.

Bu işlemi bu şekilde değilde fonksiyon çağırarak tek işlemde yapmak istiyorum.

Toplanacak matrislerin isimleriyle, toplam sonucunun yazılacağı matrisin ismini fonksiyona göndereyim, fonksiyon da bana  gerekli işlemi yapsın.

Fonksiyona matrislerin komple içeriğini değil sadece adresleri yollamak istiyorum.

C de bunu pointer kullanarak yapıyoruz fakat Delphide nasıl yapılır bilmiyorum.
Başlık: 2 boyutlu matrislerin function içinden kullanımı
Gönderen: z - 02 Temmuz 2006, 14:23:39
@SpeedyX

Sorum anlasılır oldumu?

Bir başka foruma da aynı soruyu sordum.
Yazmaya çalıştığım programda bu sorunu aşmadan ilerliyemeyeceğim.

Benim gibi Delphiyi kıçından öğrenmeye başlarsanız böyle oluyor işte.
Başlık: 2 boyutlu matrislerin function içinden kullanımı
Gönderen: SpeedyX - 02 Temmuz 2006, 14:59:56
// var GunSaat : array[1..7, 1..24] of Real;


type
 multiArray = array[0..100, 0..100] of Integer;

function deneme(var s:multiArray); xxx;


seklinde denesek?
Başlık: 2 boyutlu matrislerin function içinden kullanımı
Gönderen: SpeedyX - 02 Temmuz 2006, 15:23:07
type
 mx = array of array of integer;

function dizisil(var C: mx): Array;
var
 x, y: integer;
.
.
.
for y:=0 to length(C)-1 do // yada high(C)
  begin
     for x:=0 to length(C)-1 do // yada high(C)
        begin
            C[x][y]:=0;
        end;
  end;
.
.
.
end;


dizisil(A);


seklinde?
Başlık: 2 boyutlu matrislerin function içinden kullanımı
Gönderen: birumher - 02 Temmuz 2006, 16:04:16
SpeedyX in yöntemi bence de uygun. Bir başka yöntem de matrisi bir class olarak yaratmak. Eğer örnek istersen bir çok matris işlemini bulabileceğin yardımı vs de olan açık kaynak kodlu bir "library" önerebilirim.

MMEMatrix 0.2b (http://www.delphipages.com/edit/count.cfm?ID=1964)
Başlık: 2 boyutlu matrislerin function içinden kullanımı
Gönderen: Klein - 02 Temmuz 2006, 17:41:55
type dblarr = array [0..100] of array [0..100] of byte;

var
Form1: TForm1;
A: dblarr;
b: dblarr;
c: dblarr;
implementation

{$R *.dfm}
procedure sumarr(var ary1:dblarr;
                var ary2:dblarr;
                var aryr:dblarr);
var
Y,x:integer;
begin
for y:=0 to 100 do
  begin
     for x:=0 to 100 do
        begin
            aryr