ლექცია 6

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 5

სტრუქტურები

სტრუქტურა წარმოადგენს მონაცემთა შედგენილ ტიპს, რომელიც აიგება სხვა ცნობილი


ტიპების საშუალებით. სტრუქტურა შეიძლება შეიცავდეს როგორც ერთნაირი ტიპის, ასევე
სხვადასხვა ტიპის ელემენტებს. მონაცემთა სტრუქტურა ქმნის ახალ ტიპს, რომელიც
გამოიყენება ცვლადების გამოცხადებისათვის.
საზოგადოდ, სტრუქტურის გმოცხადება ხდება შემდეგი ფორმატის საშუალებით:
struct სახელი
{
ტიპი1 ელემენტი1;
ტიპი2 ელემენტი2;
...
ტიპიn ელემენტიn;
};
სტრუქტურის გამოცხადება (განსაზღვრა) იწყება struct სიტყვით, შემდეგ მოიცემა
სტრუქტურის სახელი და ფიგურულ ფრჩხილებში მოთავსებული სტრუქტურის
ელემენტები. სტრუქტურის ელემენტებს ეწოდება სტრუქტურის ველები და მათ
შეიძლება ჰქონდეთ ნებისმიერი ტიპი, გარდა ამავე სტრუქტურის ტიპისა. განვიხილოთ
სტრუქტურის გამოცხადების (განსაზღვრის) მაგალითი:
struct date
{
int day;
int month;
int year;
};
მოცემულ მაგალითში გამოცხადებულია მონაცემთა ახალი ტიპი date სახელით,
რომელიც შეიცავს int ტიპის სამ ელემენტს: day, month, year (დღე, თვე, წელი).
როგოც კი გამოცხადებულია ახალი ტიპი, იგი ხდები ისეთივე დასაშვები ტიპი, როგორიცაა
int, char, double, float. ამრიგად გვაქვს უფლება გამოვაცხადოთ ცვლადები
(ობიექტები) ამ ახალი შედგენილი ტიპით.
მაგალითები:
struct date x, y[50]; ან date x, y[50];
აქ x ცვლადი და y მასივი გამოცხადებულია date სტრუქტურის ტიპით.
struct date birthdey; ან date birthdey;
აქ birthdey ცვლადი გამოცხადებულია date სტრუქტურის ტიპით. birthdey ცვლადის მიერ
date ტიპის ელემენტებისადმი წვდომა (გამოყენება) ხდება ოპერაცია წერტილით (.).
მაგალითად,
birthdey.day=14;
birthdey.month=10;
birthdey.year=2021;
მაგალითი: მართკუთხედის აღწერა სტრუქტურის ტიპის გამოყენებით და მისი ფართობის
გამოთვლა
/* მართკუთხედის აღწერა სტრუქტურის ტიპის გამოყენებით.*/
#include <iostream>
using namespace std;
int main()
{
struct rectangle
{
float length;
float width;
};
double s;
struct rectangle x;
x.length = 5.2; // მართკუთხედის სიგრძის ინიციალიზაცია.
x.width = 2.5; // მართკუთხედის სიგანის ინიციალიზაცია.
s= x.length * x.width; // მართკუთხედის ფართობის გამოთვლა.
cout << "s = " << s; // მართკუთხედის ფართობის გამოტანა.
return 0;
}
პროგრამის გაშვების შემდეგ მიიღება:
s = 13

მაგალითი: მართკუთხედის აღწერა სტრუქტურის ტიპის საშუალებით. სიგრძისა და სიგანის


ცვლადების შეტანა და მისი პერიმეტრის გამოთვლა.
#include <iostream>
using namespace std;
int main()
{
struct rectangle
{
float length;
float width;
};
struct rectangle x;
cout << " Enter length :\n ";
cin >> x.length;
cout << " Enter width :\n ";
cin >> x.width;
cout << " Perimeter = " << 2 * (x.length + x.width);
return 0;
}
პროგრამის გაშვების შემდეგ მიიღება:
Enter length : 20
Enter width : 30
Perimeter = 100

typedef ინსტრუქცია
typedef ინსტრუქციის დანიშნულებაა სინონიმის ანუ ფსევდონიმის შექმნა ადრე
განსაზღვრული მონაცემთა ტიპებისათვის. ამ ინსტრუქციის ზოგადი ფორმატი ასეთია:
typedef ტიპი ახალი სახელი;
აქ ელემენტი ტიპი აღნიშნავს მონაცემთა ნებისმიერ დასაშვებ ტიპს, ელემენტი ახალი
სახელი ტიპის ახალი სახელია. ამასთან, შევნიშნოთ, რომ ახალი სახელი განისაზღვრება
ტიპის არსებული სახელისადმი დამატების სახით, და არა მისი შეცვლისათვის.
მაგალითად, შემდეგი ინსტრუქციის საშუალებით შეიძლება შეიქმნას ახალი სახელი float
ტიპისათვის:
typedef float balance;
ეს ინსტრუქცია წარმოადგენს კომპილატორებისათვის იმის შეტყობინებას, რომ
იდენტიფიკატორი balance უნდა იყოს განხილული როგორც float ტიპის კიდევ ერთი სახელი.
ამ ინსტრუქციის შემდეგ შეიძლება შეიქმნას float ტიპის ცვლადები balance სახელის
გამოყენებით:
balance x;
აქ გამოყენებულია x ცვლადი, რომელიც balance ტიპისაა და წარმოადგენს სტანდარტულ float
ტიპს სხვა სახელით.
typedef ინსტრუქციის გამოყენება
#include <iostream>
using namespace std;
int main()
{
struct rectangle
{
float length;
float width;
};
typedef rectangle martkutchedi;
martkutchedi x;
x.length = 30;
x.width = 20;
cout << " fartobi = " << x.length * x.width;
return 0;
}
პროგრამის გაშვების შემდეგ მიიღება:
fartobi =600

მაგალითი: შემდეგ პროგრამაში გამოცხადებულია სტრუქტურა სახელით student, რომელიც


შედეგბა შემდეგი ელემენტებისგან: სახელი, გვარი, ასაკი შესაბამისი აღნიშვნებით: Name –
სტუდენტის სახელი, Surname – სტუდენტის გვარი, Age – სტუდენტის ასაკი.
გამოცხადებულია ამ ტიპის 3 ელემენტიანი მასივი სახელით iformation. STUDENT
სტრუქტურა ეძებს იმ სტუდენტებს, რომელთა ასაკიც 18 წელზე მეტია და გამოაქვს მათი
გვარი, სახელი და ასაკი.
#include <iostream>
using namespace std;
struct student
{
char name[10], surname[20];
int age;
};
int main ()
{
const int n = 3;
int i, j;
student information[n];
for (i = 0; i < n; i++)
{
cout << "Input the name of a student: ";
cin >> information[i].name;
cout << "Input the surname of a student: ";
cin >> information[i].surname;
cout << "Input the age of a student: ";
cin >> information[i].age;
}
cout << '\n';
cout << "Full information about a student who is older than 18: \n";
for (i = 0; i < n; i++)
{
if (information[i].age > 19)
{
cout << " Name:" << information[i].name;
cout << " Surname:" <<information[i].surname;
cout << " Age:" << information[i].age<<endl;
}
}
return 0;
}

You might also like