பிரகடனம், தொடரியல், துவக்கம், அணுகல், எடுத்துக்காட்டு நிரல் - C++: இரு பரிமாண அணி | 11th Computer Science : Chapter 12 : Arrays and Structures
இரு பரிமாண அணி
இரு பரிமாண அணி என்பது ஒரே தரவினத்தை சார்ந்த உறுப்புகளின் தொகுதியாகும். மேலும் இவை குறிப்பிட்ட எண்ணிக்கையிலான வரிசை மற்றம் நெடுவரிசையில் சேமிக்கப்படும். எடுத்துக்காட்டாக mxn அணிக்கோவையில் m என்பது வரிசையின் எண்ணிக்கையும், n என்பது நெடுவரிசையின் எண்ணிக்கையும் ஆகும் இது படம் 12.4- ல் காட்டப்பட்டுள்ளது.
int arr[3][3];
இரு பரிமாண அணியின் அறிவிப்பு:
இரு பரிமாண அணியை அறிவிப்பதற்கான தொடரியல்
data-type array- name [row size] [col-size];
மேலே குறிப்பிடப்பட்டுள்ள அறிவிப்பில் data type என்பது C++ மொழியில் உள்ள தகுதிவாய்ந்த ஏதேனும் ஒரு தரவினத்தை குறிக்கும். Array-name என்பது 2D அணியின் பெயர், row size என்பது வரிசைகளின் எண்ணிக்கையையும், col-size என்பது நெடுவரிசைகளின் எண்ணிக்கையையும் குறிக்கும்.
எடுத்துக்காட்டு
int A [3] [4];)
மேலே குறிப்பிடப்பட்டுள்ள எடுத்துக்காட்டில் A என்ற இரு பரிமாண அணியானது 3 வரிசைகள் மற்றும் 4 நெடுவரிசைகளை கொண்டுள்ள அணியாகும். இது அதிகபட்சமாக 12 உறுப்புகளை ஏற்கும்.
குறிப்பு
சரங்களின் உறுப்புகளுக்கு தொடக்க மதிப்பிருத்தும்போது, அதன் அளவிற்கு அதிகமாக மதிப்புகளை இருத்தக்கூடாது,
int A[3] [3];
float x [2] [3];
char name [5] [20];
இரு பரிமாண அணிக்கு தொடக்க மதிப்பிறுத்தல்
இரு பரிமாண அணியை அறிவிக்கும் போதே அதற்கு ஒன்றுக்கு மேற்பட்ட வழிகளில் தொடக்க மதிப்பிருத்தலாம்.
எடுத்துக்காட்டாக,
int matrix[][3]={
{10,20,30},// row O
{40,50,60},// row 1
{70,80,90},// row 2
{100,110,120}// row 3
}
இரு பரிமாண அணியை அணுகுதல்
இருபரிமாண அணியில் ஒரு உறுப்பை அணுகுவதற்கு இரண்டு சுட்டு மதிப்புகளை பயன்படுத்த வேண்டும். இதில் முதல் சுட்டு வரிசையின் மதிப்பையும் இரண்டாவது சுட்டு நெடுவரிசையின் மதிப்பையும் குறிக்கும்.
matrix [0] [0] =10; // முதல் வரிசையில் உள்ள முதல் உறுப்பிற்கு 10 என்ற மதிப்பிருத்தும்.
matrix [0] [1] =20; // முதல் வரிசையில் உள்ள இரண்டாவது உறுப்பிற்கு 20 என்ற மதிப்பிருத்தும்
matrix [1] [2] =60; // இரண்டாம் வரிசையில் உள்ள மூன்றாம் உறுப்பிற்கு 60 என்ற மதிப்பிருத்தும்
matrix [3] [0] =100; // முதல் வரிசையில் உள்ள நான்காம் உறுப்பிற்கு 100 என்ற மதிப்பிருத்தும்.
இரு அணிக்கோவைகளில் கூட்டுத்தொகையை கணக்கிட தேவையான நிரல்
இரண்டு அணிகளை கூட்டுவதற்கான சி++ நிரல் எழுதுதல்
#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
int row, col, m1[10][10], m2[10][10],
sum[10][10]; cout<<"Enter the number of rows :";
cin>>row;
cout<<"Enter the number of columns : ";
cin>>col;
cout<< "Enter the elements of first 1st matrix: "<<endl;
for (int i = 0;i<row;i++) {
for (int j = 0;j <col;j++) {
cin>>ml[i][j];
}
}
cout<< "Enter the elements of second 2nd matrix: "<<endl;
for (int i = 0;i<row;i++) {
for (int j = 0;j <col;j++) {
cin>>m2[i][j];
}
}
cout<< "Enter the elements of second 2nd matrix: "<<endl;
for (int i = 0;i<row;i++) {
for (int j = 0;j<col;j++){
cin>>m2[i][j];
}
}
cout<<"Output: "<<endl;
for (int i = 0;i<row;i++) {
for (int j = 0;j<col;j++)
{
sum[i][j]=ml[i][j]+m2[i][j];
cout<<sum[i][j]<<" ";
}
cout<<endl<<endl;
}
getch();
return 0;
}
இரு பரிமாண அணியின் நினைவக ஒதுக்கீடு
பொதுவாக இரு பரிமாண அணியை ஒரு அணிக்கோவையாக காட்டலாம். இரு பரிமாண அணியின் கருத்து வடிவ படம் கீழே கொடுக்கப்பட்டுள்ளது.
int A[4][3];
மேலே கொடுக்கப்பட்டுள்ள எடுத்துக்காட்டில் A என்ற இரு பரிமாண அணியானது 4 வரிசைகள் மற்றும் 3 நெடு வரிசைகளை கொண்டுள்ளது. ஒரு பரிமாண அணியை போல, இரு பரிமாண அணி உறுப்புக்களும் நினைவகத்தில் தொடர்ச்சியாகவே சேமிக்கப்பட்டிருக்கும். இரு வகைகளில் இரு பரிமாண அணியின் நினைவக ஒதுக்கீட்டை குறிப்பிடலாம். அவை:
வரிசை முதன்மை கொண்டு அணுகுதல் (Row Major order)
நெடுவரிசை முதன்மை கொண்டு அணுகுதல் (Column Major Order)
எடுத்துக்காட்டு
int A[4][3] ={ {8,6,5}, {2,1,9},{3,6,4},{4,3,2}};
வரிசையை முதன்மையாக கொண்டு அணுகுதல்
வரிசையை முதன்மையாக கொண்டு அணுகுதல் முறையில் அனைத்து உறுப்புகளும் ஒவ்வொரு வரிசையாக நினைவக இடத்தில் தொடர்ச்சியாக சேமிக்கப்பட்டிருக்கும். அதாவது முதல் வரிசையில் எல்லா உறுப்புகளும் முதலில் சேமிக்கப்பட்ட பின்பு அடுத்து இரண்டாவது வரிசையின் எல்லா உறுப்புகளும் சேமிக்கப்படும் அதேபோன்று அனைத்து வரிசையின் உறுப்புகளும் சேமிக்கப்படும். வரிசை முதன்மையாக கொண்டு அணுகுதல் முறையில் நினைவக ஒதுக்கீட்டு முறையை கீழே காணலாம்.
நெடுவரிசையை முதன்மையாக கொண்டு அணுகுதல்
நெடுவரிசையை முதன்மையாக கொண்டு அணுகுதல் முறையில் அனைத்து உறுப்புக்களும் ஒவ்வொரு நெடுவரிசையாக நினைவக இடத்தில் தொடர்ச்சியாக சேமிக்கப்பட்டிருக்கும். அதாவது முதல் நெடுவரிசையின் எல்லா உறுப்புகளும் முதலில் சேமிக்கப்பட்ட பின்பு அடுத்து இரண்டாவது நெடுவரிசையின் எல்லா உறுப்புகளும் சேமிக்கப்பட்டும் அதேபோன்று அனைத்து நெடுவரிசையின் உறுப்புகளும் சேமிக்கப்படும். நெடுவரிசையை முதன்மையாக கொண்டு அணுகுதல் முறையில் நினைவக ஒதுக்கீட்டு முறையை கீழே காணலாம்.