iOS 101Başlangıç seviyesi derslerde iOS uygulama geliştirme ortamını detaylı olarak inceliyoruz.

Tüm Eğitimleri Aldın mı? Kendini sınamanın tam zamanı

Haydi Sınava Gir

İki Boyutlu Dizinin Argüman Olarak Gönderilmesi

Kategori : Mobil | Lisans : Creative Commons (by-nc-sa) | En son 12.05.2016 tarihinde güncellendi
Eğitmen : Geleceği Yazanlar Ekibi
Etiketler : obj-c dizi argümanı obj-c diziler

 

İ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