المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : طلب صغيررررررررررر



الكتكوته
17-04-2005, 05:36 PM
السلام عليكم ورحمة الله وبركاته

عندي برنامج مو فاهمته إذا احد يقدر يساعدني يرسلي عالخاص عشان اضيفه عالماسنجر ويشرح لي لأني مرررررررررررررررررره متوهقه

oms
17-04-2005, 07:48 PM
تقدمت لحل الأخت على الماسنجر وقد حصل التالي :

OMS says:
حسناً هات ما عندك
toootooo says:
السلام عليكم
OMS says:
وعليكم السلام
toootooo says:
برسل لك فايل البرنامج عالبورلاند سي بلس بلس
OMS says:
على الإيميل
toootooo says:
ليه احسن هنا
OMS says:
أنا أستخدم الويب ماسنجر
OMS says:
يعني ما أستقبل ملف
toootooo says:
اوكي برسله عالإيميل
OMS says:
ولكن ما مشكلتك
OMS says:
يا ...
toootooo says:
ارسلته عالإيميل
toootooo says:
وصل
toootooo says:
؟
OMS says:
إنتظر قليلاً
toootooo says:
حسنا
OMS says:
من أي كتاب ؟؟
toootooo says:
كتاب مترجم
toootooo says:
اسمه
toootooo says:
تراكيب البيانات وصيغها الرياضية
OMS says:
حسناً

وهنا قمت بأخذ البرنامج وهو :


#include <iostream>
#include <string>
using namespace std;
class word
{
private:
int size;
int count;
string workStr;
void rotate(int);
void displayWord();
public:
word(string);
void anagram(int);
};
word::word(string inpStr):workStr(inpStr),count(0)
{
size=inpStr.length();
}
void word::anagram(int newSize)
{
if(newSize==1)
return;
for(int j=0;j<newSize;j++)
{
anagram(newSize-1);
if(newSize==2)
displayWord();
rotate(newSize);
}
}
void word::rotate(int newSize)
{
int j;
int position=size-newSize;
char temp=workStr[position];
for(j=position+1;j<size;j++)
workStr[j-1]=workStr[j];
workStr[j-1]=temp;
}
void word::displayWord()
{
if(count<99)
cout<<" ";
if(count<9)
cout<<" ";
cout<<++count<<" ";
cout<<workStr<<" ";
if(count%6==0)
cout<<endl;
}
int main()
{
string input;
int length;
cout<<"Enter a word"<<endl;
cin>>input;
length=input.length();
word theWord(input);
theWord.anagram(length);
return 0;
}






OMS says:
حاول التتبع معي في البرنامج
toootooo says:
اوكي
OMS says:
في البداية قام البرنامج بإضافة مكتبتين
OMS says:
واحدة للإدخال والإخراج وواحدة للتعامل مع النصوص
OMS says:
قام في السطر الثالث بتعريف نيم سبيس
toootooo says:
.
toootooo says:
اوكي
OMS says:
أي أنه سيقوم على عمل مكتبة خاصة به يمكن إستخدامها في برنامج آخر
OMS says:
قام بعدها بتعريف كلاس وسماه وورد
OMS says:
حيث أنه ..
OMS says:
عفواً هل تعلم ما هو الكلاس
OMS says:
؟؟
toootooo says:
نعم اعرفه جيدا
OMS says:
حسناً
OMS says:
حيث أنه قام بإضافة متغيرات في القسم الخاص ودوال في القسم العام ( الخارجي )
toootooo says:
اضاف دوال ايضا في القسم الخاص
OMS says:
وبعدها قام بكتابة كود الدوال التي في الكلاس
OMS says:
نعم
toootooo says:
؟
OMS says:
يجوز إستخدامها في القسم الخاص
toootooo says:
اوكي
OMS says:
حيث أنه بهذه العملية لن يسمح بظهور الدوال في القسم الخاص عندما نأخذ كائن من نوع الكلاس
OMS says:
وبعدها قام بكتابة الكود الخاص للدالة وورد
toootooo says:
اها
OMS says:
وهنا قام بإعطاء المتغير workStr القيمة الناتجة من الباراميتر
OMS says:
وهنا قام بإعطاء المتغير
OMS says:
workStr
OMS says:
القيمة الناتجة من الباراميتر
OMS says:
inpStr
OMS says:
وقام بإعطاء المتغير
OMS says:
count
OMS says:
القيمة 0 كقيمة أولية
OMS says:
وفي الداخل قام بتعريف المتغير
OMS says:
size
OMS says:
بطول الكلمة في الباراميتر وهي هنا المتغير
OMS says:
inpStr
OMS says:
ولأنه عبارة عن متغير
OMS says:
String
OMS says:
فكان في مقدورنا أن نستخدم الخاصية
OMS says:
length
OMS says:
إلى هنا هل من أسئلة ؟؟
toootooo says:
لا إلي هنا كل شيء مفهوم
OMS says:
حسناً
OMS says:
طبعاً الدالة التي ذكرتها قبل قليل هي عبارة عن كونستركتر
OMS says:
هل تعلم ما هو الكونستركتر ؟؟
toootooo says:
كونستركتور للكلاس ؟
OMS says:
نعم
toootooo says:
نعم
OMS says:
هل تعرفه ؟
toootooo says:
فهمت
OMS says:
هو عبارة عن دالة تحمل نفس إسم الكلاس
OMS says:
وتنفذ عند أخذ كائن من نوع الكلاس
OMS says:
حسناً
OMS says:
في الدالة الثانية وهي
OMS says:
anagram
OMS says:
قام بتعريف باراميتر من نوع إنتجر
OMS says:
وفي الداخل قام بفحصه
OMS says:
إذا كان ذا القيمة 1 فإنه سيقوم بالخروج من الدالة
OMS says:
وغير ذلك فإنه سيستمر وكأن جملة الإف غير موجودة
OMS says:
في جملة الفور قام بتعريف متغير جي
toootooo says:
وماذا يعني newSize اذا كان size هو طول الكلمه
toootooo says:
؟
OMS says:
لا
OMS says:
طول الكلمة هو سايز فقط
OMS says:
والثانية متغيرة
OMS says:
تابع معي وبعد الإنتهاء من شرح الدالة إسأل
OMS says:
بعد جملة الفور
OMS says:
قام بإستدعاء ذاته
OMS says:
وتسمى هذه العملية بالإستدعاء الذاتي
OMS says:
أي
OMS says:
recurcion
OMS says:
وقام بإرسال متغير وهو الطول الحالي منقوص منه واحد
OMS says:
وبهذه العملية يمكنه الوصول إلى العدد 1 الذي سيقوم بإخراجه من الدالة ككل
OMS says:
ثم يقوم بعد ذلك بالسؤال
OMS says:
هل الطول الحالي هو 2
OMS says:
إذا كان الجواب نعم
OMS says:
قوم بتنفيذ الدالة
OMS says:
displayWord();
OMS says:
وهي المسؤولة عن طباعة الكلمة
OMS says:
الآن
OMS says:
هل لاحظت الفرق بين سايز ونيو سايز ؟
toootooo says:
يعني تقريبا السايز ثابت مانغيره عشان اذا احتجناه بطول الكلمه
OMS says:
صح
OMS says:
والثاني هو عبارة عن متغير نقوم بأخذ السايز الحقيقي من الكلاس
OMS says:
ومن ثم تنقيصه إلى أن يصل إلى 1 أي شرط الخروج
OMS says:
هل وضحت الفرق ؟
toootooo says:
اها
toootooo says:
نعم وضح
OMS says:
حسناً إلى الدالة التالية
OMS says:
وهي الدالة
OMS says:
rotate
OMS says:
وهي تقوم على قلب الجملة على ما أعتقد
OMS says:
إنتظر قليلاً لألقي عليها نظرة سريعة
toootooo says:
حسنا
OMS says:
؟؟
OMS says:
هذا البرنامج يقوم بقلب الكلمة فقط
OMS says:
يعني بعكس الكلمة فقط
OMS says:
لا عليك سأتابع الشرح
OMS says:
قام في البداية بتعريف متغير لحلقة الفور
OMS says:
في السطر الثاني من الدالة قام بتعريف متغير وهو الموقع وأعطاه قيمة أولية الطول الأصلي ناقصاً الطول الذي أدخلة في الباراميتر
OMS says:
ثم قام بأخذ الخانة عن طريق الإستدعاء الذاتي من الكلمة الأصلية وهي
OMS says:
workStr
OMS says:
طبعاً هنا إعتبرها مصفوفة وقام بأخذ الخانه منه
toootooo says:
اهاا
OMS says:
ثم في جملة الفور قام بتبديل الخانة السابقة بالخانة اللاحقة
OMS says:
يعني هنا قام بأخذ الحرف السابق وإبداله بالحرف اللاحق
OMS says:
ستخدام الإستدعاء الذاتي
OMS says:
مممممممم
OMS says:
فعلاً الذي كتب البرنامج انه ذكي
toootooo says:
روبرت لافور http://sc.webmessenger.msn.com/10.1.0323.0/session/images/emoticons/smile_teeth.gif
OMS says:
ثم عن طريق آخر جملة قام بإعطاء الخانة اللاحقة بالمتغير تيمب الذي قد أعطاه بالأساس القيمة الأولية في ثالث جملة
OMS says:
هل لك تعليق على هذه الدالة
OMS says:
؟؟
toootooo says:
لا هل هي تقوم بإزاحه الحروف إلي اليسار
OMS says:
نعم كلام صحيح
toootooo says:
ثم وضع الحرف الذي كان في التيمب في اليمين
OMS says:
يعني تقوم بإزاحة الخانة التي إلى اليمين لتجعلها على اليسار
OMS says:
كلام صحيح وجميل
OMS says:
هل هناك تعليق آخر
toootooo says:
لا
OMS says:
حسناً إلى الدالة التالية
OMS says:
وهي دالة الطباعة
OMS says:
حيث أنه يقوم بالتشييك على المتغير
OMS says:
count
OMS says:
هل هو أقل من 99
OMS says:
إذا كان كذلك فإنه يقوم بطباعة الخانات التي تحت جملة الإف
OMS says:
وهذه العملية يطلق عليها بالعمليات التجميلية والتي تخرج منظر للشكل العام للجملة
OMS says:
حيث أنه يقوم بإختبار العدد للخانات الموجودة في النص
OMS says:
وفي الجملة
OMS says:
cout<<++count<<" ";
OMS says:
يقوم بزيادة المتغير ومن ثم طباعته
OMS says:
ثم يقوم بطباعة الكلمة
OMS says:
وإذا كان المتغير count
OMS says:
من 6 خانات فإنه يقوم بطباعة سطر جديد
OMS says:
والآن هل هناك أسئلة على الدالة السابقة ؟؟
toootooo says:
لا واضحه
OMS says:
حسناً لننطلق إلى الدالة الرئيسية
OMS says:
وفيها يقوم المبرمج بإنشاء متغير من نوع سترينج
OMS says:
ومتغير من نوع إنتجر
OMS says:
ثم يطلب من المستخدم أن يدخل جملة
OMS says:
وبعدها يقوم بتحديد طولها بالجملة
OMS says:
length=input.length();
OMS says:
ثم يقوم بإنشاء كائن من نوع
OMS says:
word
OMS says:
ويستخدم الدالة anagram
OMS says:
وفي النهاية يقوم بإرجاء القيمة 0 للدالة الرئيسية
OMS says:
... http://sc.webmessenger.msn.com/10.1.0323.0/session/images/emoticons/smile_regular.gif ...
OMS says:
هل هناك أي إستفسار
OMS says:
؟؟
toootooo says:
لا شكرااا ..

الكتكوته
17-04-2005, 08:31 PM
أرجع وأقولك مشكوووووور وإن شاء الله يستفيد منه الكل