: vector -1 المصفوفات عن طريق استخدام
وهي مصفوفة عادية فيها عناصر وتبدا من 0 حتى حجم
المصفوفة ناقص 1 اي انها مثل المصفوفات العادية ولكن هنا في
انها مصفوفة اكثر تقدما ومرنة وايضا ويوجد لها vector ال
وهي انه في اي resize دوال ومن اهم الدوال انه يوجد دالة
وقت من الاوقات تستطيع ان تغير حجم المصفوفة حتى خلال تنفيذ
البرنامج من الممكن ان تجعل المستخدم يدخل عدد العناصر الذي
يريدها وهذا شيء غير موجود في المصفوفات الكلاسيكية وطبعا
هذه الخاصية مفيدة جدا.
<vector> يجب ان نضمن مكتبة vector ومن اجل استخدام ال
فاننا يجب ان نضع جملة .h وبما انها ليس
وبعد ذلك عند تعريف مصفوفة فاننا using namespace std;
ومن ثم نضع vector اي انها من نوع vector اول شيء نضع
فاننا نضعها int نوع البيانات بين قوسين منحرفين فاذا كنا نريد
وبعد ذلك نضع اسم المصفوفة ومن ثم نضع حجم <int> هكذا
المصفوفة كبين قوسين عاديين .
vector <double> back (20);
double نوع بياناتها vector فهنا عرفنا مصفوفة من نوع
. وحجمها 20 back واسمها
فانها تعطي جميع vector ***عند تعريف مصفوفة من نوع
عناصر المصفوفة قيمة 0 كقيمة ابتدائية.
لنأخذ مثال :---
#include <iostream.h>
#include <vector>
using namespace std;
void main()
{
int a;
vector <int> password(10);
password[1]=5;
cout<<"the second element::
"<<password[1]<<endl;
cout<<"the first element ::
"<<password[0]<<endl<<endl<<endl;
vector <int> mam(10,7);
mam[1]=5;
cout<<"the second element:
"<<mam[1]<<endl;
cout<<"the first element :: "<<mam[0]<<endl;
cout<<"the size of the mam vector ::
"<<mam.size()<<endl;
cout<<"enter number toresize the mam vector
::..::"<<endl;
cin>>a;
mam.resize(a);
cout<<"the size of mam vector now ::
"<<mam.size()<<endl;
}
ونوع password واسميناها vector قمنا بتعريف مصفوفة
وحجمها 10 وبعد ذلك قلنا له ان اجعل العنصر الذي int بيانتها
رقمه واحد يساوي 5 وطبعا بما ان المصفوفة تبدا من الصفر فان
العنصر رقم واحد هو العنصر الثاني .
و بعد ذلك قلنا له ان يطبع العنصر رقم 1 ثم قلنا له ان يطبع
العنصر رقم 0 وهو العنصر الاول وهنا في العنصر الاول طبع لنا
صفر وذلك لاننا قلنا ان المصفوفة اول ما نعرفها انها تضع قيمة 0
في كل عناصرها .
وحجمها 10 ولكن int نوعها vector وبعد ذلك عرفنا مصفوفة
هناك شيء جديد وهو انه بعدما وضعنا الحجم فاننا وضعنا رقم 7
بعد فاصلة وهو كاننا نقول له ان حجمها 10 واملئ عناصر
المصفوفة كلها بالقيمة 7 فهنا بدل ان يضع القيمة الابتدائية
. للمصفوفة 0 فان القيمة الابتدائية اصبحت 7
. ومن ثم قلنا له ان العنصر رقم 1 ضع به القيمة 13
ثم طبعنا القيمة التي بالعنصر 1 ومن ثم طبعنا القيمة التي في
العنصر رقم 0 وطبعا سوف يكون في العنصر رقم 0 القيمة 7 لاننا
. جعلنا القيمة الابتدائية للمصفوفة هي 7
vector هو دالة في ال size فان mam.size() ثم هنا في جملة
وهو يرجع لنا حجم المصفوفة .
. a وبعد ذلك ادخل المستخدم قيمة في المتغير
فانها جملة تغيير حجم المصفوفة mam.resize(a) ولاحظ جملة
وهنا بين القوسين نضع حجم vector هي دالة لل resize و
المصفوفة وكما راينا اننا نستيع جعل حجم مصفوفة بتحكم من
المستخدم وهذا ما لا تستطيعه المصفوفات الكلاسيكية .
مثل اعطاء اول قيمة vector وهناك دوال اخرى جميلة في ال
واخر قيمة وشطب المصفوفة وما الى ذلك من دوال مفيدة
وتستطيع معرفة هذه الدوال انه بعد ان تكتب اسم المصفوفة
وتضع نقطة فانها سوف تظهر لك في قائمة .
*** اذا لم ينجح البرنامج في التنفيذ معك وقال لك ان هناك خطا
بدل <apvector.h> فحاول ان تعمل تضمين للمكتبة
وعند using namespace std; والغي جملة <vector>
. vector بدل apvector تعريف مصفوفة ضع كلمة
********************************
: (typedef) -2 جملة تعريف انواع البيانات
هي جملة من اجل ان نعرف نوع بيانات معين typedef جملة
الخ..) باسم اخر . char او int (اي
ثم نوع البيانات ثم typedef وتكون صيغة الجملة اول شيء كلمة
الاسم الذي تريد استخدامه.
مثال:----
#include <iostream.h>
typedef int entry;
void main()
{
typedef int entry;
entry y;
entry m;
entry s;
cin>>y>>m>>s;
cout<<y<<endl<<m<<endl<<s<<endl;
}
اي انه اينما . entry بالاسم int فهنا قد عرفنا نوع البيانات
. int فان البرنامج ياخذها على انها entry توضع كلمة
. entry وكما نلاحظ اننا قمنا بتعريف المتغيرات بال
والفائدة منها هو انه اذا اردنا تغيير نوع البيانات فاننا فقط نغير
النوع الذ ي عرفنا به الاسم فبالمثال السابق اذا اردنا تحويل
كل ماعلينا فعله هو ناتي للجملة التي char الى int البيانات من
اذن في المثال char ونغير النوع الى entry عرفنا بها الاسم
هكذا: typedef السابق تصبح جملة ال
typedef char entry;
فتخيل انه انك كتبت كود من الف سطر وتريد تغيير النوع البيانات
التي تريد ادخالها فهل سوف تذهب الى كل تعريف وتغيره طبعا لا
والى اصبحت لغة السي ++ باليه فالذي تفعله انك تعرف اسم من
نوع ما وتستخدمه عند تعريف المتغيرات التي من الممكن ان تقوم
بتغيير نوع بياناته.
***************************************
: (enum) -3 تعدد الاحتمالات و جملة
يوجد مواقف كثيرة تكون احتمالاتها الذي سوف تنتهي به اكثر من
ولكن اذا كان هناك اكثر bool حالتين كنا عند الحالتين نستخدم ال
وهذه enum من حالتين فماذا سنفعل وجاء الحل في جملة
الجملة تعطيك صلاحية تعريف الحالات التي تريد و عدد الحلات
التي تريد.
الذي enum فيصبح باستطاعتك تعريف متغيرات من نوع ال
عرفته.
ثم نفتح قوس } ثم نضع enum وصيغتها كالتالي اول شيء كلمة
الحالة الاولى ثم فاصلة , ثم الحاله الثانية ثم فاصلة , ...وهكذا
حتى انتهاء الحالات نضع تسكيرة القوس { وفي النهاية نضع
فاصلة منقوطة ; .
مثال :---
#include <iostream.h>
enum error{success,notgood,theworst};
error check(int);
void main()
{
int a;
cin>>a;
error r=check(a);
if (r==success)
{
cout<<"success"<<endl;
}
else if(r==notgood)
{
cout<<"notgood"<<endl;
}
else
cout<<"the worst"<<endl;
}
error check (int s)
{
if (s>90)
return success;
else if (s<90 && s>60)
return notgood;
else
return theworst;
}
وفيها enum من نوع error وفي المثال السابق قمنا بتعريف
والثالثة notgood والثانية success ثلاث حالات الحالة الاولى
. theworst
ان enum **** تستطيع استخدام الانواع التي تعرف بها ال
تعرف بها المتغيرات وتعف بها الدوال ايضا.****
*************************************
:(assert) -4 عمليات التاكد من شروط البرنامج وجملة
وهي اداه للتاكد من (debug) هي عبارة عن اداة assert
الاخطاء وتصحيح البرامج . عند استخدامها يجب تضمين مكتبة
احداهما فقط ليس الاثنتين. cassert او مكتبة assert.h
هي عبارة عن جملة شرطية ترجع حالتان assert فهنا جملة
فانه يكمل البرنامج اما اذا ارجع true فاذا رجعت false او true
ويخرج لنا error فان البرنامج يتوقف ويخرج لنا جملة false
شاشة سوداء يقول لنا فيها انه هناك خطا في الشرط كذا في
السطر كذا.
مثال:---
#include <iostream.h>
#include <assert.h>
void main()
{
int a;
cin>>a;
assert(a<5);
cout<<"we come over it::..::"<<endl;
}
ففي المثال السابق اذا ادخلنا له عدد اقل من 5 فان البرنامج يكمل
ما له اما اذا ادخلنا رقم اكبر من 5 فان البرنامج يتوقف ويخرج
ثم يخرج شاشة سوداء فيها الاتي : error
assertion failed: a<5, file وهنا يعطيك موقع الملف في جهازك , line 7
وذلك عند assert اذن اعطى انه هناك خطأ في احدى جمل ال
. في الملف الذي موقعه كذا عند السطر ال 7 a< شرط 5
** يوجد هنا فائدة جيدة هي انه يعطينا الملف الذي حصل فيه
الخطأ فانه اذا كان البرنامج يتكون من اكثر من ملف فانه يعطيك
باي ملف حصل الخطا .
اذن فهي تستخدم عندما نريد ان نتحقق من ان شيء معين صحيح
ام لا او ان شيء ما لم يخرج عن نطاقه فنبقي البرنامج متماسك
بهذه الطريقة ونجعله بعيد عن الخطأ قدر الامكان.
**************************************
: objects -5 ملاحظة على ال
#include <iostream.h>
class a
{
public:
a(int m)
{
_m=m;
cout<<"iam the a "<<_m<<" constructer
::..::"<<endl;
}
~a()
{
cout<<"iam the a "<<_m<<" destructer
::..::"<<endl;
}
private:
int _m;
};
a a1(1);
void main()
{
a a2(2);
}
اي في المنطقة العامة ) main قبل ال object هنا قمنا بتعريف
فان البرنامج سوف main داخل ال object للبرنامج) وعرفنا
main الذي خارج ال object لل constructer يبدأ بتنفيذ ال
ثم عند النهاية فانه ينفذ ال main ثم يبدا بالذي داخل ال
.main ثم الذي خارج ال main للذي داخل ال destructer
الذي هو في a ال 1 constructer ففي المثال السابق سوف ينفذ
الذي داخل ال a ال 2 conatructer المنطقة العامة ومن ثم ينفذ
ومن ثم a ال 2 destructer وعند النهاية سوف ينفذ main
. a ال 1 destructer ينفذ
فسوف يكون اخراج البرنامج لنا الاتي:
iam the a 1 constructer ::..::
iam the a 2 constructer ::..::
iam the a 2 destructer ::..::
iam the a 1 destructer ::..::
*** بعضكم سوف يقول انه خرج لي الاتي ولكن اخر جملة لم
(iam the a 1 destructer ::..: تخرج التي هي
وذلك بانه يكون برنامج الترجمة الذي تستخدمه
لا يعتمد السي++ الاساس . والاغلب انك (compiler)
فان به هذا الخطا ايضا. vc++ v. تستخدم برنامج 6.0
والعكس : string او char الى int 6التحويل
من
في بعض ا لاحيان هنالك تكون الارقام على موجودة لديك على شكل
وتريد تحويلها الى char احرف اي انها داخل متغير من نوع
وهنا ابسط حل لهذه المشكلة هو اننا نقوم بطرح int صيغة ال
المتغير من ' 0' كالآتي :
char id='9';
int _idno=id-'0';
اما اذل اردت ان تفعل العكس اي ان تحول الارقام وتجعلها على
فانك تفعل العكس اي char الى int شكل احرف اي ان تحول من
. ' اننا نجمع ' 0
int b=9;
char bb=b+'0';
جرب تطبيق البرنامج التالي:
#include <iostream.h>
void main()
{
int a =9;
char m ='6';
int kk=a+(m-'0');
char dd=a+'0';
cout<<kk<<endl<<dd<<endl;
}
*** هذه الطريقة تستطيع استخدامها عندما يكون الرقم يتكون
من منزلة واحدة فقط اي اننا لا نستطيع تحويل الرقم 130 الى
بهذه الطريقة لانه اكثر من منزلة واحدة والعكس نفس char
الشيء اي انه لا تستطيع تحويل رقم يتكون من اكثر من منزلة من
بهذه الطريقة.
الأحد يوليو 10, 2011 8:54 am من طرف أحمدالسيدالصعيدي
» الشبكات NETWORKS
الجمعة ديسمبر 17, 2010 9:58 pm من طرف THE DRAGON
» صفارات BIOS
الجمعة ديسمبر 17, 2010 9:54 pm من طرف THE DRAGON
» proxy >>>بروكسي
الجمعة ديسمبر 17, 2010 9:44 pm من طرف THE DRAGON
» بدك تحرم الضحيه على انو يفوت على الياهوو مسنجر او على ايماله الخاص
الخميس ديسمبر 02, 2010 5:26 am من طرف bibeto008
» قصيدة باللغة الانكليزية
الأحد نوفمبر 28, 2010 12:51 am من طرف lana
» مهم جداً...............
السبت نوفمبر 27, 2010 1:09 pm من طرف عاشق الاحساس
» اصابة الاربطة المتصالبة للركبة
الجمعة نوفمبر 26, 2010 5:24 pm من طرف THE DRAGON
» كبار السن و الرياضة
الجمعة نوفمبر 26, 2010 5:21 pm من طرف THE DRAGON