İki boyutlu diziler de argüman olarak bir fonksiyon içine gönderilebilir. İki boyutlu dizi bir C fonksiyonunun parametresiyse, bu durumda ilk boyut belirtilmez, sadece ikinci boyut belirtilir. Aşağıdaki örnekte de, sütunları sıralayan C fonksiyonu ile çağıran fonksiyon iç içe kullanılmıştır ve bu iki fonksiyon arasındaki iletişim referans yoluyla sağlanmıştır. Aynı zamanda burada kullanılan ilk dizi, gönderilen dizinin başlangıç adresidir.
Aşağıdaki mat_sort adlı fonksiyon, gönderilen iki boyutlu dizinin sütunlarını sıralıyor. Sıralanan dizi çağıran programda yazdırılıyor.
Bir Matrisin Sütunlarını Sıralayan C Fonksiyonu ve Çağıran Fonksiyon İle Birlikte Kullanılması:
#import <Foundation/Foundation.h>
void mat_sort(int x[][4],int m,int n);
int main(int argc,const char *argv[])
{
NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
int a[3][4]={{2,1,7,3},{5,3,6,8},{4,7,9,1}};
int i,j;
mat_sort(a,3,4);
NSLog(@"\nSIRALANMIŞ MATRİS(SÜTUNLAR)\n\n");
for (i=0; i<3; i++)
{
for (j=0; j<4; j++)
printf(" %i \t ",a[i][j]);
NSLog(@"\n");
}
[pool drain];
return 0;
}
void mat_sort(int x[][4],int m,int n)
{
int i,j,k,t;
for (j=0; j<n; j++)
{
for (i=0; i<m-1; i++)
{
for (k=i+1; k<m; k++)
{
if(x[i][j]>x[k][j])
{
t=x[i][j];
x[i][j]=x[k][j];
x[k][j]=t;
}
}
}
}
}
PROGRAMIN ÇIKTISI:
2 1 6 1
4 3 7 3
5 7 9 8
PROBLEM:
Aşağıdaki gibi bir matris oluşturan bir Objective C fonksiyonu yazalım ve çağıran program ile birlikte kullanalım:
Gördüğümüz gibi, matrisin ilk sütununda 0-90 arasındaki açılar (derece olarak) yerleştirilecek, ikinci sütuna bu açıların sinüsleri (sin 0,sin 30,sin 60 vb.) üçüncü sütuna da bunların kosinüsleri yerleştirilecektir.
Basit Trigonometrik Tabloyu Oluşturan Objective C Programının Kod Bloğu:
#include "math.h"
void trig(double t[][3],int m);
#import <Foundation/Foundation.h>
int main(int argc,const char *argv[])
{
NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
double x[4][3];
int i,j;
trig(x,4);
NSLog(@"\n ACI\t SIN \t COS\n");
for (i=0; i<4; i++)
{
for (j=0; j<3; j++)
NSLog(@" %f\t ",x[i][j]);
NSLog(@"\n");
}
[pool drain];
return 0;
}
void trig(double t[][3],int m)
{
int i;
double s;
s=0;
for (i=0; i<m; i++)
{
t[i][0]=s;
s=s+30;
t[i][1]=sin(t[i][0]*3.14159/180);
t[i][2]=cos(t[i][0]*3.14159/180);
}
}
PROGRAMIN ÇIKTISI:
AÇI SİN COS
0.000000 0.000000 1.000000
30.000000 0.500000 0.866026
60.000000 0.866025 0.500001
90.000000 1.000000 0.000001