C Proqramlaşdırmasında Çox Ölçülü Diziler

3X3 matrisini nəzərdən keçirin. 3 sıra və 3 sütundan ibarətdir. 3 sətir və 3 sütun dedikdə, hər sətirdə 3 element və ya hər sütünda 3 sətir olduğu deməkdir. Hər bir sıra 3 elementdən ibarət bir sıra və ya hər sütun 3 elementdən ibarət olduğu üçün bunu C dilində göstərmək olar. Bu matrisin bütün sətirlərini və ya sütunlarını birləşdirdiyimiz zaman, o, bir sıra massivinə çevrilir. Bu, Sətirlər (Sütun massivləri) massivləri deməkdir.

Matrisanı C dilindən istifadə etmək üçün eyni konsepsiyadan istifadə edə bilərik. Yəni satırlardakı və sütunlardakı elementlər massivlər kimi qəbul edilir və dəyərləri saxlamaq üçün istifadə edilə bilər. Bu sıra massivlərinə 2 ölçülü massiv deyilir. Daha çox ölçülü dəyərləri saxlamaq üçün genişləndikdə eyni konsepsiya çox ölçülü bir sıra olaraq adlandırılır.

İndi 2B massivini nəzərdən keçirək. Yuxarıda müzakirə etdiyimiz kimi 2D massivi bir sıra sütunlu satırlardır. Aşağıdakı 3X3 matrisini nəzərdən keçirin. 3 sıra və 3 sütundan ibarətdir. Hər sətir 3 elementdən ibarət bir massivdir.

Bu, 2 ölçülü bir sıra kimi qəbul edilə bilər və aşağıdakı kimi C ilə təmsil edilə bilər.

int intArr [3] [3];

Burada intArr 2 sıra (birinci [] element) və 3 ədəd (ikinci [] element) tamsayı tipli bir 3D massividir. Yəni onun elementləri tam tiplidir. Bunu 2B massivi kimi desək də, yaddaşda bir ölçülü massiv kimi satırlar / sütunlar arasında heç bir ayrılma olmadan bitişik yaddaş yerlərini tuturlar. İstifadəçi tərəfindən kodlaşdırarkən bu fərqlənə bilər. 2D massivindəki hər bir elementə 1D massivi kimi indekslərdən istifadə etməklə əldə edilir - əlverişli bir metod kimi birinci indeks həmişə sətri, ikinci indeks isə sütunu təmsil edir. yəni; intArr [0] [2] serialın birinci sətrini, 3-cü sütun elementini təmsil edir, yəni; 30.

2D massivi, 1D massivi üçün etdiyimiz kimi başlandıra bilər. Burada satır və sütunları fərqləndirməyə ehtiyac yoxdur. Dizini elan edərkən göstərilən ölçülərdən asılı olaraq sətir və sütun dəyərlərini avtomatik olaraq təyin edəcəkdir.

Array dəyişən elan edərkən

Bu, 1D massivinə bənzəyir. Hər hansı bir başlanğıc olunmamış massiv elementinə bu metodda 0 təyin olunmuş olacaq.

int intArr [10] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100}; // bütün 10 elementi başlatır
int intArr [10] = {10}; // ilk elementi 10-a başlayır və qalan hissəsi sıfır olacaq

 

#include <stdio.h>

void main () {
	int intArr [3][3] = { 5, 10, 15, 20, 25, 30, 35, 40, 45 };

	printf ("\nElements of array are:\n");
	for (int i = 0; i < 3; i++){
		for (int j = 0; j < 3; j++)
			printf ("%d\t", intArr[i] [j]);
		printf ("\n"); // helps display in table format
	}
}

Burada 2B massivlərinin elementləri satır və sütun nəzərə alınmadan başladılır. Lakin intArr elan edərkən qeyd olunan ölçülər sətir və sütun sayına qərar verir və elementləri öz sıralarına və sütunlarına bölür. Xarici dövr üçün printf ifadəsinə görə masa şəklində göstərilir. Bu ifadəni silsək, heç bir sətir və sütun ayırd edə bilməyəcəyik və 2 ölçülü sıra məlumatlarını 1 ölçülü sıra elementləri kimi görəcəyik.

Burada da serialı elan edərkən massivin ölçüsünü təyin etməyimizə ehtiyac yoxdur, əgər biz də işə salırıqsa. Ancaq sıra elanında sütun sayını qeyd etmək lazımdır, belə ki, sıra sayı avtomatik olaraq təyin edilə bilər. Əks təqdirdə tək ölçülü massivlə eyni olacaq.

#include <stdio.h>

void main () {
	int intArr [][3] = { 5, 10, 15, 20, 25, 30, 35};

	printf ("\nElements of array are:\n");
	for (int i = 0; i < 3; i++){
		for (int j = 0; j < 3; j++)
			printf ("%d\t", intArr[i] [j]);
		printf ("\n"); // helps display in table format
	}
}

Yuxarıdakı nümunədə sıra sayından bəhs etmədik. Ancaq sütun sayını təyin etdik. Beləliklə, onun elementlərini işə saldıqda, hər 3-cü elementdən sonra növbəti elementi növbəti sətrin elementi hesab edir. Beləliklə 3 satır olduğunu avtomatik olaraq təyin etdi. Bundan əlavə, massivin bütün elementlərini başlanğıc vəziyyətinə gətirməmişik. Avtomatik olaraq onları sıfır vəziyyətinə gətirdi.

Array dəyişən elan edildikdən sonra

Dizini elan etdikdən sonra işə salırıqsa, 1D massivində olduğu kimi dəyərləri onlara təyin etmək üçün sıra elementlərini ayrıca seçməliyik.

int intArr [3] [2];

intArr [0] [1] = 10;
intArr [1] [1} = 20;
intArr [2] [0] = 30;

#include <stdio.h>

void main(){
	int intArr [3][2];

	intArr [0][1] = 10;
	intArr [1][1]= 20;
	intArr [2][0] = 30;

	printf ("\nElements of array are:\n");
	for (int i = 0; i < 3; i++) {
		for (int j = 0; j < 3; j++)
			printf ("%d\t", intArr[i][j]);
		printf ("\n");
	}
}

Burada ilk başlanğıc metodundan fərqli olaraq, massivin başlanğıc olunmamış elementlərinin zibil dəyərlərinə sahib olduğunu görə bilərik. Yalnız başlanğıc edilən elementlər düzgün dəyərlərə malikdir. Başlanğıc dəyəri verilməyən 30-ci sıra 2-cü sütunda bir daha 3-u görə bilərik; ancaq bəzi zibil dəyərləridir (zibil dəyəri istifadəçinin daxil etmədiyi hər hansı bir dəyər ola bilər).

Klaviaturadan və ya giriş sənədindən dəyərlər daxil etməklə

İstifadəçidən scanf funksiyasından istifadə edərək dəyərləri massivə daxil etməsi istənə bilər. Aşağıdakı kimi massivdəki hər elementə dəyərlər təyin edəcəkdir.

#include <stdio.h>

void main (){
    int intArr [3][3];

    printf ("\nPlease integer numbers into two dimensional array :");
    for (int i = 0; i < 3; i++)
        for (int j= 0;j < 3;j++)
        scanf ("%4d", &intArr[i][j]);

    printf ("\nElements of array are:\n");
    for (int i = 0; i < 3; i++){
        for (int j = 0; j < 3; j++)
            printf ("%d\t", intArr[i][j]);
        printf ("\n");
    }
}

2B massivi belə elan olunur, işə salınır və əldə edilir. Çox ölçülü massiv kimi adlandırılan 2-dən çox ölçülü massivimiz ola bilər. 2D massivi ilə eyni şəkildə başlanğıc elan edilə bilər. Çoxölçülü massivin elan edilməsi, işə salınması və əldə edilməsi nümunələri aşağıdakılardır:

int intArr [3] [3] [2];
axıtma flArr [5] [2] [7] [3];
    int intArr [3] [3] [2] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18};
intArr [1] [2] [0] = 10;
intArr [2] [2] [0] = 20;
flArr[0][0][5][2] = 3.14;
flArr[0][1][6][0] = 12.45;

Şərh yaz

Translate »