اذهب إلى المحتوى

السؤال

Recommended Posts

  • 1
نشر

struct عبارة عن بنية بيانات,في C ++ , يمكن استخدامها لتخزين عناصر من أنواع بيانات مختلفة معا, لإنشاء struct  في C ++ ، نستخدم الكلمة الأساسية struct ، متبوعة باسم المعرف, كما هو واضح في المثال الآتي

struct struct_name  
{  
     
}  

تتم إضافة متغيرات struct داخل الأقواس المتعرجة. ربما يكون كل متغير من نوع مختلف من البيانات, على سبيل المثال

struct Person  
{  
    char name[30];
    int age;
}  

كما تلاحظ بداخل الأقوس قمنا بتعريف أكثر من متغير وكل متغير من نوع مختلف من البيانات, في المثال الذي في الأعلى، أنشأنا struct باسم Person. يمكننا إنشاء متغير منه على النحو التالي:

Person p1;

p1 هو متغير struct من نوع Person. يمكننا استخدام هذا المتغير للوصول إلى المتغيرات التي بداخله ومن ثم استخدامها, للوصول إلى متغيرات struct ، نستخدم المتغير الذي أنشأناه منه مع النقطة (.), على سبيل المثال ، للوصول إلى المتغير age واسناد اليه قيمة يكون كالتالي

p1.age = 20;

 

  • 1
نشر (معدل)

لنفهم ال  struct  دعنا نتابع المثال التالي. لنفرض أنه طلب منك أن تكتب برنامج تسجل فيه سجلات طلاب والذي يحوي بيانات ((( مختلفة )))). مثل (رقم الطالب (int) ، الاسم الأول (string)، الكنية (string)، المعدل (float)) وقد يكون هناك بيانات أخرى.. الآن بالحالة الاعتيادية لكي يتم ذلك، نعرف لكل طالب نعرف متغيرات يعبر كل منها عن نوع من البيانات المذكورة .. مثلاً لو كان لدي طالبين فأنا بحاجة 4 متحولات لكل طالب = 8 متحولات. وبالتالي السؤال الذي يفرض نفسه هنا هو ماذا لو كان لدي 20 طالب مثلاً ؟ سنحتاج 20 ×4 = 80  متحول !! وهذا كما نعلم أمر مقبول أو محبب !
ما الحل إذاً؟ الحل هو struct، إذاً : struct  هي بنية معطيات تستخدم لتعريف نوع جديد يحوي مجموعة محددة من القيم مختلفة النوع، ويتم الوصول لهذه العناصر أو القيم عن طريق اسمها. مثال لتعريف struct:

struct struct_name   //struct_name : اسم نختاره
{
//هنا نكتب العناصر أو المتحولات وقيمها
int  id;
string f_name;
string l_name;
float avg;
} S1 ;

الآن أصبح لدينا نمط جديد هو struct ويمكن أخذ غرض منه .. إما بذكر اسم الغرض بعد قوس النهاية مباشرة ( الغرض S1 ) ، أو بالشكل الاعتيادي:

struct struct_name S1;

مثال : للتعامل مع ال struct (الوصول إلى عناصره) و سنقوم بالتصريح عن طريقة تقبل بارمترين من نوع struct  وتقوم بحساب مجموع رواتب موظفين اثنين (يمكن نسخ الكود التالي وتنفيذه لملاحظة النتائج):

#include<bits/stdc++.h>
using namespace std;
struct employee
{
int  id;
string name;
string last_name ;
float salary ;
float bonus ; 
} ;
//تعريف الطريقة التي تقبل بارمترين لها من النمط  ستراكت
employee add_salary (employee emp1 , employee emp2)
{
employee result ;
result.salary = emp1.salary + emp2.salary ;
return result ;
}
int main() {
employee  e1,e2 ;  // أخذنا غرضين من النمط السابق
// مباشرة الوصول الى المتحولات واعطائها قيم 
e1.id = 10 ;
e1.name = " ali ";
e1.last_name = "haidar" ;
e1.salary = 100000;
e1.bonus = e1.salary * 0.2 ;
// ادخال قيم متحولات الموظف الثاني من الكيبورد
cout << " Enter the value of second employee's parameter is : ";
cin>>e2.id>>e2.name>>e2.last_name>>e2.bonus;
cout<< " the salary of first employee =  "<<e1.salary<<endl;
cout<<" the salary of second employee = " ;
cin>>e2.salary  ;
employee z = add_salary(e1,e2);
cout<<"the salary of two employees = "<< z.salary ;
}

 

تم التعديل في بواسطة Ali Haidar Ahmad

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...