programlama dilleri 1w3.bilecik.edu.tr/bilgisayar/wp-content/uploads/sites/75/...Çok boyutlu...

31
Programlama Dilleri 1 Ders 10: Çok Boyutlu Diziler

Upload: others

Post on 04-Sep-2020

21 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programlama Dilleri 1w3.bilecik.edu.tr/bilgisayar/wp-content/uploads/sites/75/...Çok Boyutlu Diziler Çok boyutlu diziler tek boyutlu diziler gibi bellekte tutulurlar. Tek boyutlu

Programlama Dilleri 1

Ders 10: Çok Boyutlu Diziler

Page 2: Programlama Dilleri 1w3.bilecik.edu.tr/bilgisayar/wp-content/uploads/sites/75/...Çok Boyutlu Diziler Çok boyutlu diziler tek boyutlu diziler gibi bellekte tutulurlar. Tek boyutlu

Genel Bakış

Giriş

Çok Boyutlu Diziler

Çok Boyutlu Dizilere Değer Atama

Çok Boyutlu Dizilerin Hafıza Yerleşimi

Çok Boyutlu Dizileri Tek Boyutlu Hale Getirme

Çok Boyutlu Dizilerde Adres

2 Programlama Dilleri 1

Page 3: Programlama Dilleri 1w3.bilecik.edu.tr/bilgisayar/wp-content/uploads/sites/75/...Çok Boyutlu Diziler Çok boyutlu diziler tek boyutlu diziler gibi bellekte tutulurlar. Tek boyutlu

Giriş

C Programlama dilinde diziler birden

fazla boyuta sahip olabilirler.

Çok boyutlu dizileri elemanları yine

dizilerden oluşan diziler olarak düşünmek

mümkündür.

Çok boyutlu dizi tanımlamanın, tek

boyutlu dizi tanımlamaktan yapı olarak

büyük bir farkı yoktur.

Programlama Dilleri 1 3

Page 4: Programlama Dilleri 1w3.bilecik.edu.tr/bilgisayar/wp-content/uploads/sites/75/...Çok Boyutlu Diziler Çok boyutlu diziler tek boyutlu diziler gibi bellekte tutulurlar. Tek boyutlu

Giriş

Diziye eklenen her bir boyut için yine [ ]

işaretleri arasında bir sayı tanımlanmaktadır.

Çok boyutlu bilgileri veya veri tablolarını

saklamak için kullanılırlar.

Çok boyutlu dizilerin bildirimi için kullanılan

genel yapı :

veri tipi dizi_adı [boyut1] [boyut2] [boyut3]...

4 Programlama Dilleri 1

Page 5: Programlama Dilleri 1w3.bilecik.edu.tr/bilgisayar/wp-content/uploads/sites/75/...Çok Boyutlu Diziler Çok boyutlu diziler tek boyutlu diziler gibi bellekte tutulurlar. Tek boyutlu

Çok Boyutlu Diziler

5 Programlama Dilleri 1

Page 6: Programlama Dilleri 1w3.bilecik.edu.tr/bilgisayar/wp-content/uploads/sites/75/...Çok Boyutlu Diziler Çok boyutlu diziler tek boyutlu diziler gibi bellekte tutulurlar. Tek boyutlu

Çok Boyutlu Diziler

Dizi Çeşidi Genel Bildirimi Örnek

Tek boyutlu diziler

(Vektörler) tip dizi_adı[eleman_sayısı] int veri[30];

İki boyutlu diziler

(Matrisler)

tip

dizi_adı[satır_sayısı][sutun_sayısı] float mat[5][4];

Çok boyutlu

diziler

tip

dizi_adı[boyut_1][boyut_2]……

…[boyut n]

double x[2][4][3];

6 Programlama Dilleri 1

Page 7: Programlama Dilleri 1w3.bilecik.edu.tr/bilgisayar/wp-content/uploads/sites/75/...Çok Boyutlu Diziler Çok boyutlu diziler tek boyutlu diziler gibi bellekte tutulurlar. Tek boyutlu

Çok Boyutlu Diziler

Bir çok boyutlu dizi ekrana matris formunda yazılmak

istendiğinde:

Örneğin 3x4’lük bir matris için

for(i=0; i<3; i++)

{

for(j=0; j<4; j++)

printf("%4d", x[i][j]);

}

Programlama Dilleri 1 7

Page 8: Programlama Dilleri 1w3.bilecik.edu.tr/bilgisayar/wp-content/uploads/sites/75/...Çok Boyutlu Diziler Çok boyutlu diziler tek boyutlu diziler gibi bellekte tutulurlar. Tek boyutlu

Çok Boyutlu Diziler

Çok boyutlu diziler tek boyutlu diziler gibi bellekte

tutulurlar.

Tek boyutlu dizilerde olduğu gibi, çok boyutlu dizilerde

de başlangıç değeri vermek mümkündür.

Örneğin 3 satır ve 4 sütunlu (3x4=12 elemanlı) bir x

matrisinin elemanları şöyle tanımlanabilir:

int x[3][4] = {11,34,42,60,72,99,10,50, 80,66,21,38};

yada

int x[3][4] = {11,34,42,60,

72,99,10,50,

80,66,21,38};

8 Programlama Dilleri 1

Page 9: Programlama Dilleri 1w3.bilecik.edu.tr/bilgisayar/wp-content/uploads/sites/75/...Çok Boyutlu Diziler Çok boyutlu diziler tek boyutlu diziler gibi bellekte tutulurlar. Tek boyutlu

Çok Boyutlu Dizilerde Atama

main( ) {

int idizi[3][4];

idizi[0][0] = idizi[0][1] = idizi[0][2] = idizi[0][3] = 1 ;

idizi[1][0] = idizi[1][1] = idizi[1][2] = idizi[1][3] = 2 ;

idizi[2][0] = idizi[2][1] = idizi[2][2] = idizi[2][3] = 3 ;

printf("%d %d %d %d \n", idizi[0][0], idizi[0][1], idizi[0][2], idizi[0][3]);

printf("%d %d %d %d \n", idizi[1][0], idizi[1][1], idizi[1][2], idizi[1][3]);

printf("%d %d %d %d \n", idizi[2][0], idizi[2][1], idizi[2][2], idizi[2][3]);

}

9 Programlama Dilleri 1

1 1 1 1

2 2 2 2

3 3 3 3

Page 10: Programlama Dilleri 1w3.bilecik.edu.tr/bilgisayar/wp-content/uploads/sites/75/...Çok Boyutlu Diziler Çok boyutlu diziler tek boyutlu diziler gibi bellekte tutulurlar. Tek boyutlu

Çok Boyutlu Dizilerde Atama

Örnekte 3x4'lük ve 12 elemanlık iki boyutlu int bir dizi

tanımlanır.

1 sayısı ile gösterilen işlem satırında dizinin ilk

satırındaki elemanlara 1 değerini, 2 sayısı ile gösterilen

işlem satırında dizinin ikinci satırında yer alan

elemanlara 2 değerini, 3 sayısı ile gösterilen işlem

satırında ise dizinin üçüncü satırındaki elemanlara 3

değerini atar.

Daha sonra printf() fonksiyonunun kullanıldığı işlem

satırları ile dizinin satırlarını sırasıyla ekrana yazar.

10 Programlama Dilleri 1

Page 11: Programlama Dilleri 1w3.bilecik.edu.tr/bilgisayar/wp-content/uploads/sites/75/...Çok Boyutlu Diziler Çok boyutlu diziler tek boyutlu diziler gibi bellekte tutulurlar. Tek boyutlu

Çok Boyutlu Diziye Değer Atama main( void ) {

// 5 adet ogrenci icin 8 adet sinavi temsil etmesi icin bir ogrenci

tablosu olusturulur. Bunun icin 5x8 bir matris gerekiyor.

int ogrenci_tablosu[ 5 ][ 8 ];

int i, j;

for( i = 0; i < 5; i++ ) {

for( j = 0; j < 8; j++ ) {

printf( "%d no.'lu ogrencinin ", ( i + 1 ) );

printf( "%d no.'lu sınavı: ", ( j + 1 ) );

scanf( "%d", &ogrenci_tablosu[ i ][ j ] );

}

}

}

Programlama Dilleri 1 11

Page 12: Programlama Dilleri 1w3.bilecik.edu.tr/bilgisayar/wp-content/uploads/sites/75/...Çok Boyutlu Diziler Çok boyutlu diziler tek boyutlu diziler gibi bellekte tutulurlar. Tek boyutlu

Çok Boyutlu Diziye Değer Atama main( void ) {

// 5 adet ogrenci icin 8 adet sinavi temsil etmesi icin bir ogrenci

tablosu olusturulur. Bunun icin 5x8 bir matris gerekiyor.

int ogrenci_tablosu[ 5 ][ 8 ];

int i, j;

for( i = 0; i < 5; i++ ) {

for( j = 0; j < 8; j++ ) {

printf( "%d no.'lu ogrencinin ", ( i + 1 ) );

printf( "%d no.'lu sınavı: ", ( j + 1 ) );

scanf( "%d", &(ogrenci_tablosu+i)[ j ] );

}

}

}

Programlama Dilleri 1 12

Page 13: Programlama Dilleri 1w3.bilecik.edu.tr/bilgisayar/wp-content/uploads/sites/75/...Çok Boyutlu Diziler Çok boyutlu diziler tek boyutlu diziler gibi bellekte tutulurlar. Tek boyutlu

Çok Boyutlu Diziye Değer Atama main( void ) {

// 5 adet ogrenci icin 8 adet sinavi temsil etmesi icin bir ogrenci

tablosu olusturulur. Bunun icin 5x8 bir matris gerekiyor.

int ogrenci_tablosu[ 5 ][ 8 ];

int i, j;

for( i = 0; i < 5; i++ ) {

for( j = 0; j < 8; j++ ) {

printf( "%d no.'lu ogrencinin ", ( i + 1 ) );

printf( "%d no.'lu sınavı: ", ( j + 1 ) );

scanf( "%d", *(ogrenci_tablosu+i)+j );

}

}

}

Programlama Dilleri 1 13

Page 14: Programlama Dilleri 1w3.bilecik.edu.tr/bilgisayar/wp-content/uploads/sites/75/...Çok Boyutlu Diziler Çok boyutlu diziler tek boyutlu diziler gibi bellekte tutulurlar. Tek boyutlu

Çok Boyutlu Diziye Değer Atama

Programlama Dilleri 1 14

80 75 50 35 65 95 49 40

60 70 40 90 95 100 64 64

73 ...

… 55

5 öğrenci

8 sınav

Görsel bir şekilde ifade edecek olursak;

2. öğrencinin

4. sınavı

Page 15: Programlama Dilleri 1w3.bilecik.edu.tr/bilgisayar/wp-content/uploads/sites/75/...Çok Boyutlu Diziler Çok boyutlu diziler tek boyutlu diziler gibi bellekte tutulurlar. Tek boyutlu

Çok Boyutlu Dizilerin Hafıza Yerleşimi

Bilgisayar hafızası tek boyutludur.

İster tek boyutlu, ister çok boyutlu bir dizi

içerisinde bulunan elemanlar, birbiri

ardına gelen bellek hücrelerinde tutulur.

İki boyutlu bir dizide bulunan

elemanların, hafızada nasıl yerleştiği

örnekte gösterilmiştir.

Programlama Dilleri 1 15

Page 16: Programlama Dilleri 1w3.bilecik.edu.tr/bilgisayar/wp-content/uploads/sites/75/...Çok Boyutlu Diziler Çok boyutlu diziler tek boyutlu diziler gibi bellekte tutulurlar. Tek boyutlu

Çok Boyutlu Dizilerin Hafıza Yerleşimi

Programlama Dilleri 1 16

Page 17: Programlama Dilleri 1w3.bilecik.edu.tr/bilgisayar/wp-content/uploads/sites/75/...Çok Boyutlu Diziler Çok boyutlu diziler tek boyutlu diziler gibi bellekte tutulurlar. Tek boyutlu

İki Matrisin Toplamı #define SAT 2

#define SUT 3

main( ) {

int a[SAT][SUT] = {5, 3, 7, 0, 1, 2};

int b[SAT][SUT] = {1, 2, 3, 4, 5, 6};

int c[SAT][SUT];

int i, j;

puts("A Matrisi:");

for(i=0; i<SAT; i++){

for(j=0; j<SUT; j++)

printf("%4d",a[i][j]);

printf("\n");

}

puts("B Matrisi:");

Programlama Dilleri 1 17

Page 18: Programlama Dilleri 1w3.bilecik.edu.tr/bilgisayar/wp-content/uploads/sites/75/...Çok Boyutlu Diziler Çok boyutlu diziler tek boyutlu diziler gibi bellekte tutulurlar. Tek boyutlu

İki Matrisin Toplamı puts("B Matrisi:");

for(i=0; i<SAT; i++){

for(j=0; j<SUT; j++) printf("%4d",b[i][j]);

printf("\n");

}

puts("\nC Matrisi:");

for(i=0; i<SAT; i++){

for(j=0; j<SUT; j++){

c[i][j] = a[i][j] + b[i][j]; printf("%4d",c[i][j]);

}

printf("\n");

}

}

Programlama Dilleri 1 18

Page 19: Programlama Dilleri 1w3.bilecik.edu.tr/bilgisayar/wp-content/uploads/sites/75/...Çok Boyutlu Diziler Çok boyutlu diziler tek boyutlu diziler gibi bellekte tutulurlar. Tek boyutlu

Tek Boyutlu Diziyi İki Boyutlu Matrise

Çevirme main( ) {

int dizi[100];

int a[100][100];

int i, j, n, x, st, su;

printf("Dizi kac elemandan olusmali : "); scanf("%d",&n);

for(x=0; x<n; x++) {

printf("Dizinin [%d] . elemanini giriniz : ",x+1);

scanf("%d",&dizi[x]);

}

printf("\nDizi elemanlari -->\n" );

for(x=0; x<n; x++) {

printf("%3d",dizi[x]);

}

Programlama Dilleri 1 19

Page 20: Programlama Dilleri 1w3.bilecik.edu.tr/bilgisayar/wp-content/uploads/sites/75/...Çok Boyutlu Diziler Çok boyutlu diziler tek boyutlu diziler gibi bellekte tutulurlar. Tek boyutlu

Tek Boyutlu Diziyi İki Boyutlu Matrise

Çevirme printf("\nMatrisin Satir sayisini giriniz : ");

scanf("%d",&st);

printf("\nMatrisin Sutun sayisini giriniz : ");

scanf("%d",&su);

if(n%st= =0 && n%su= =0) {

x=0;

for(i=0; i<st; i++) {

for (j=0; j<su; j++) {

a[i][j]=dizi[x];

x++;

}

}

printf("\n\nMATRIS > \n");

Programlama Dilleri 1 20

Page 21: Programlama Dilleri 1w3.bilecik.edu.tr/bilgisayar/wp-content/uploads/sites/75/...Çok Boyutlu Diziler Çok boyutlu diziler tek boyutlu diziler gibi bellekte tutulurlar. Tek boyutlu

Tek Boyutlu Diziyi İki Boyutlu Matrise

Çevirme for(i=0; i<st; i++) {

for(j=0; j<su; j++) {

("%3d", a[i][j]);

}

printf("\n");

}

} // if…

else

printf("HATA! Dizi Eleman Sayisi Satir veya Sutuna Tam

bolunmelidir");

}

Programlama Dilleri 1 21

Page 22: Programlama Dilleri 1w3.bilecik.edu.tr/bilgisayar/wp-content/uploads/sites/75/...Çok Boyutlu Diziler Çok boyutlu diziler tek boyutlu diziler gibi bellekte tutulurlar. Tek boyutlu

Fonksiyonlara Çok Boyutlu Dizileri

Aktarmak

n boyutlu bir diziyi fonksiyona parametre

göndermek, tek boyutlu diziyi

göndermekten farklı sayılmaz.

Tek farkı dizinin n boyutlu olduğunu

belirtmemiz ve ilk boyut hariç diğer

boyutların eleman sayısını mutlaka

yazmamızın gerekli olmasıdır.

İlk elemanın boyutunu yazmaya gerek

yoktur.

Programlama Dilleri 1 22

Page 23: Programlama Dilleri 1w3.bilecik.edu.tr/bilgisayar/wp-content/uploads/sites/75/...Çok Boyutlu Diziler Çok boyutlu diziler tek boyutlu diziler gibi bellekte tutulurlar. Tek boyutlu

Fonksiyonlara Çok Boyutlu Dizileri

Aktarmak 4 boyutlu bir diziyi ele alırsak parametre gönderimi şu

şekilde olur;

Örnek: 2x3x4x5’lik bir dizi ile 6x7’lik bir diziyi toplamak istersek fonksiyona aşağıdaki gibi parametre tanımlayabiliriz.

void Topla(int A[ ][3][4][5],int B[ ][7])

{

/****/

}

main( ){

Topla(A, B);

/*Fonksiyon çağrılırken boyut yazılmaz!!!*/

}

Programlama Dilleri 1 23

Page 24: Programlama Dilleri 1w3.bilecik.edu.tr/bilgisayar/wp-content/uploads/sites/75/...Çok Boyutlu Diziler Çok boyutlu diziler tek boyutlu diziler gibi bellekte tutulurlar. Tek boyutlu

Fonksiyonlara Çok Boyutlu Dizileri

Aktarmak #include<stdio.h>

void matris_yazdir( int [ ][ 4 ], int );

int main( void ) {

int matris[ 3 ][ 4 ] = { {10, 15, 20, 25}, {30, 35, 40, 45}, {50, 55, 60, 65} };

matris_yazdir( matris, 3 );

return 0;

}

void matris_yazdir( int dizi[ ][ 4 ], int satir_sayisi )

{

int i, j;

for( i = 0; i < satir_sayisi; i++ ) {

for( j = 0; j < 4; j++ ) {

printf( "%d ", dizi[ i ][ j ] );

}

printf( "\n" );

}

}

Programlama Dilleri 1 24

Parametre tanımlaması yaparken, iki boyutlu dizinin satır boyutunu girmemize

gerek yoktur. Ancak sütun boyutunu girmek gerekir.

void matris_yazdir(int dizi[][4],int satir_sayisi){

/* ifade */

}

Page 25: Programlama Dilleri 1w3.bilecik.edu.tr/bilgisayar/wp-content/uploads/sites/75/...Çok Boyutlu Diziler Çok boyutlu diziler tek boyutlu diziler gibi bellekte tutulurlar. Tek boyutlu

Çok Boyutlu Dizilerde Adres #include<stdio.h>

void satir_goster( int satir[ ] );

int main( void ) {

int tablo[5][4] = {

{4, 3, 2, 1},

{1, 2, 3, 4},

{5, 6, 7, 8},

{2, 5, 7, 9},

{0, 5, 9, 0} };

int i, j;

printf( "2 boyutlu tablo %p adresinden başlar\n\n", tablo );

printf( "Tablo elemanları ve hafıza adresleri:\n");

for( i = 0; i < 5; i++ ) {

for( j = 0; j < 4; j++ ) {

printf( "%d (%p) ", tablo[i][j], &tablo[i][j] ); } printf( "\n" );

}

printf( "\nTablo satırlarının başlangıç adresleri: \n");

for( i = 0; i < 5; i++ )

printf( "tablo[%d]'nin başlangıç adresi %p\n", i, tablo[i] );

for( i = 0; i < 5; i++ )

satir_goster( tablo[i] );

}

// Kendisine gonderilen tek boyutlu bir dizinin elemanlarini yazdirir.

void satir_goster( int satir[ ] ) {

int i; for( i = 0; i < 4; i++ ) {

// 4 sütun sayısı tablo[i][4]

printf( "%d (%p) ", satir[i], &satir[i] );

}

printf( "\n" );

}

Programlama Dilleri 1 25

Page 26: Programlama Dilleri 1w3.bilecik.edu.tr/bilgisayar/wp-content/uploads/sites/75/...Çok Boyutlu Diziler Çok boyutlu diziler tek boyutlu diziler gibi bellekte tutulurlar. Tek boyutlu

Çok Boyutlu Dizilerde Adres

Öncelikle dizinin başlangıç adresi yazdırılır.

Tablo içerisinde bulunan dizi elemanlarının

adresleri ve değerleri yazdırılır.

Çok boyutlu diziler birden fazla dizinin

toplamı olarak düşünülebilir ve her satır tek

boyutlu bir dizi olarak ele alınabilir.

Önce her satırın başlangıç adresi gösterilir.

Sonra satırlar tek boyutlu dizi şeklinde

satir_goster( ) fonksiyonuna gönderilir.

Programlama Dilleri 1 26

Page 27: Programlama Dilleri 1w3.bilecik.edu.tr/bilgisayar/wp-content/uploads/sites/75/...Çok Boyutlu Diziler Çok boyutlu diziler tek boyutlu diziler gibi bellekte tutulurlar. Tek boyutlu

Çok Boyutlu Dizilerde Adres

Dizi elemanlarının hafızada ardışık

yerleşimi bize başka imkanlar da

sunmaktadır.

İki boyutlu bir diziyi, tek boyutlu bir

diziye gösterici yardımıyla tek seferde

dönüştürmek mümkündür.

Programlama Dilleri 1 27

Page 28: Programlama Dilleri 1w3.bilecik.edu.tr/bilgisayar/wp-content/uploads/sites/75/...Çok Boyutlu Diziler Çok boyutlu diziler tek boyutlu diziler gibi bellekte tutulurlar. Tek boyutlu

Çok Boyutlu Dizilerde Adres

main( ) {

int i; int tablo[5][4] = { {4, 3, 2, 1}, {1, 2, 3, 4}, {5, 6, 7, 8}, {2, 5, 7, 9},

{0, 5, 9, 0} };

// Cok boyutlu dizinin baslangic adresini bir gostericiye atiyoruz.

int *p = tablo[0]; //(int *)tablo…

// p isimli pointer'i tek boyutlu bir dizi gibi kullanabiliriz.

// Ayni zamanda p uzerinde yapacagimiz degisikler, tablo'yu da etkiler.

for( i = 0; i < 5*4; i++ )

printf( "%d\n", p[i] );

}

Programlama Dilleri 1 28

Page 29: Programlama Dilleri 1w3.bilecik.edu.tr/bilgisayar/wp-content/uploads/sites/75/...Çok Boyutlu Diziler Çok boyutlu diziler tek boyutlu diziler gibi bellekte tutulurlar. Tek boyutlu

Gösterici Dizileri int main( void ) {

int i, j;

int Turkiye[8];

int Cad[8];

int Kosova[8];

int Rusya[8];

int Japonya[8];

int *tablo[5]; // Yukarda tanimlanan dizilerin adreslerini tablo'ya aktiriyoruz.

tablo[0] = Turkiye; tablo[1] = Cad; tablo[2] = Kosova; tablo[3] = Rusya;

tablo[4] = Japonya;

for( i = 0; i < 5; i++ ) {

for( j = 0 ; j < 8; j++ )

printf( "%p\n", &tablo[i][j] );

}

}

29 Programlama Dilleri 1

int *tablo[5]; olarak tanımlanan ifade bir matris

gibi düşünülebilir.

tablo, elemanların adreslerini gösteriyor gibi

görünse de, gösterilen adresler Turkiye, Cad,….

dizilerinin eleman adresleridir.

Page 30: Programlama Dilleri 1w3.bilecik.edu.tr/bilgisayar/wp-content/uploads/sites/75/...Çok Boyutlu Diziler Çok boyutlu diziler tek boyutlu diziler gibi bellekte tutulurlar. Tek boyutlu

Çok Boyutlu Diziyi Tek Boyuta İndirme

#include <stdio.h>

int array3d[2][3][2] = {

{{0, 1}, {2, 3}, {3, 4}},

{{5, 6}, {7, 8}, {9, 10}}

};

int main( ) {

int i;

for(i = 0; i < 12; i++) {

printf("%d ", *((int*)array3d + i));

}

printf("\n");

return 0;

}

Çıktı:

0 1 2 3 3 4 5 6 7 8 9 10

Programlama Dilleri 1 30

array3d[2][3][2] gibi 3 boyutlu bir

dizide baştaki 2 satır sayısı, 3 sütun

sayısı, sondaki 2 ise 3. boyuttaki

eleman sayısını gösterir.

Page 31: Programlama Dilleri 1w3.bilecik.edu.tr/bilgisayar/wp-content/uploads/sites/75/...Çok Boyutlu Diziler Çok boyutlu diziler tek boyutlu diziler gibi bellekte tutulurlar. Tek boyutlu

Çok Boyutlu Diziyi Tek Boyuta İndirme

main ( ) {

int numbers [2][3][4] = {

{{1,2,3,4},{5,6,7,8},{9,10,11,12}} ,

{{13,14,15,16},{17,18,19,20},{21,22,23,24}}

};

int i,j,k;

printf("3D:\n");

for(i=0;i<2;++i)

for(j=0;j<3;++j)

for(k=0;k<4;++k)

printf("%i ", numbers[i][j][k]);

printf("\n\n1D:\n");

for(i=0;i<24;++i)

printf("%i ", *((int*)numbers+i));

printf("\n");

}

Programlama Dilleri 1 31