مشاهدة النسخة كاملة : برنامج في ++c عن الأعداد العقدية ..


angel83
28-07-2006, 04:24 PM
مرحبا ..
انا عضو جديد أنضم لكم ... أدعى رانيا طالبه سنه أولى هندسة في نظم المعلومات ..
أدرس عبر الأنترنت في اتلجامعه الأفتراضية السورية ..
ولذا أجد صعوبة في بعض الأمور وخصوصا في الواجبات لأنني لا أجد زميل يشاركني في الحل ...
فأستفيد منه ويستفيد مني... ونتساعد في الواجبات والدروس وغيرها ...
وأطمح ان اجد من يساعدني في هذا الواجب ...
وهو كالآتي :
الصف MyComplex
معرف كما يلي :

private:
double x;
double y;
public:
MyComplex (double x1=0, double y1=0);
MyComplex (const MyComplex& z);
~MyComplex(void);



double getX();
double getY();
double getModule();
double getAngle();
void setX(double x1);
void setY(double y1);
void read();يقوم بقرائة واصفات العدد التخيلي بعد أظهار الرساله المناسبة للمستخدم
void print();يقوم بأظهار العدد وفق الشكل العادي و المثلثي






والمطلوب كتابة برنامج يحقق هذا الصف وأجراء أختبارات على هذا الصف

ومن ثم كتابة أجرائية تقوم بحل معادله من الدرجة الثانيه بأمثال عقدية


والعمليات المطلوبه هي
طباعه العدد العقدي وفق الشكلالعام والشكل المثلثي (يه , ر) أي الطويله والزاوية

angel83
28-07-2006, 04:45 PM
وهنا قد وضعت الصف من جديد لأنني أظن انه لم يكن واضح في الأعلى




وشكرا .....
رانيا ..

منطلق بطموحي
28-07-2006, 04:52 PM
السلام عليكم :

ما هو المطلوب بالظبط ؟

هل هو تعريف الدوال الموجودة ضمن ال class ؟

ان كان كذلك ساساعدك ببعض الافكار

angel83
28-07-2006, 08:52 PM
اهلن بك اخي ...
انا لا أدري ما المطلوب بالضبط .. فكما فهمت أنه في هذا الصف قد وجدت عدة تعليمات تساعدنا على الوصول لخرج البرنامج على ما أظن ....
او الستعان بالصف كي نكتب برنامجنا...
وهاك المطلوب بالتفصيل..في الملف المرفق ولك جزيل الشكر ...
فائق أحترامي ...

منطلق بطموحي
28-07-2006, 10:38 PM
السلام عليكم:

مطلوب عدة أشياء لنتفحصها من خلال ال main لكن لفعل ذلك فالمطلوب تعريف الدوال المعكاة خارج الصف او بداخله ( حسبما درستم ) ...و افضل ان تكون بالخارج كي لا ينقصونك علامات

ساعطيك مثال لاحد الدوال كيف نبرمجها و فكري بالباقي و ان واجهت اي مشكلة فلا تترددي بالاستفسار

مثال ...ساصمم لك ال constructor ( لا اعرف مسماه بالعربية ) و هو تعريف الدالة التالية ببرنامجك :

MyComplex (double x1=0, double y1=0);

نقوم بتعريفه خارج ال class ( الصف ) كالتالي كما تعودنا سابقا

MyComplex::MyComplex(double x1,double x2)
:x(x1),
y(y1)
**
}

طبعا لا بد من كل صف ان يحوي constructor ...لماذا؟

مثال لتعريف الدالة التالية:

MyComplex operator +(const MyComplex& z);

و هي من دوال ال overloading يمكن تعريفها كالتالي:

MyComplex MyComplex::operator+(const MyComplex & z)
**
return MyComplex(x+z.z,y+z.y);
}


ربما يكون موضوع البرمجة الكائنية او الشيئية OOP صعبا نوعا ما بالبداية و لكن مع الوقت ستعتادين عليه ...حاولي فهمه جيدا و حلي قدر المستطاع من الامثله ...و اي استفسار انا بالخدمه

wafk

منطلق بطموحي
28-07-2006, 10:50 PM
لدي اكثر من مثال لموضوع ال الصفوف و اخترت لك احد هذه الامثله يتحدث عن الاعداد الكسرية rational numbers حاولي دراسته جيدا ربما ساعدك بفهم الموضوع اكثر

#include <iostream>
using std::cout;
using std::endl;

class Rational **
public:
Rational(int top=1, int bottom=1); // constructor
void setNumerator(int top);
void setDenominator(int bottom);
int getNumerator( ) const;
int getDenominator( ) const;
void setRational(int top, int bottom);
void printFraction( ) const;
void printDecimal( ) const;
void reduce( );
private:
int numerator;
int denominator;
}; // end class Rational

Rational::Rational(int top, int bottom)
**
numerator = top;
denominator = bottom;
reduce(); // reduce to lowest form
} // end constructor Rational

void Rational::setNumerator(int top)
**
numerator = top;
}

void Rational::setDenominator(int bottom)
**
denominator = bottom;
}

void Rational::setRational(int top, int bottom)
**
numerator = top;
denominator = bottom;
reduce(); // reduce to lowest form
}


int Rational::getNumerator( ) const
**
return numerator;
}

int Rational::getDenominator( ) const
**
return denominator;
}

void Rational::reduce( )
**
int factor = abs(numerator);

while(factor > 1) **
if( ((numerator % factor) == 0)
&& ((denominator % factor) == 0)) **
// found a factor - reduce
numerator = numerator / factor;
denominator /= factor;
}
factor--;
}

}

void Rational::printFraction( ) const
**
if(numerator*denominator < 0)
cout << "-"; // print negative sign
cout << abs(numerator) << "/" << abs(denominator);
}

void Rational::printDecimal( ) const
**
float decimalNumerator = numerator;
float decimalDenominator = denominator;
cout << decimalNumerator/decimalDenominator;
}

Rational multiply(const Rational &num1, const Rational &num2)
**
Rational answer;

answer.setNumerator(num1.getNumerator() * num2.getNumerator());
answer.setDenominator(num1.getDenominator() * num2.getDenominator());
answer.reduce();
return answer;
}

int main()
**
Rational myObject;

cout << " Default value of number is " <<
myObject.getNumerator() << "/" <<
myObject.getDenominator() << endl;

myObject.setNumerator(18);
myObject.setDenominator(24);
myObject.reduce();

cout << " New value of number is " <<
myObject.getNumerator() << "/" <<
myObject.getDenominator() << endl;

Rational secondObject(2,3); // initial value is "2/3"

cout << "Initial value of secondObject is ";
secondObject.printFraction();
cout << " OR ";
secondObject.printDecimal();
cout << endl;

secondObject.setRational(103,67);

cout << " New value of secondObject is ";
secondObject.printFraction();
cout << " OR ";
secondObject.printDecimal();
cout << endl;

secondObject.setRational(-18,24);

cout << " New value of secondObject is ";
secondObject.printFraction();
cout << " OR ";
secondObject.printDecimal();
cout << endl;

secondObject.setRational(18,-24);

cout << " New value of secondObject is ";
secondObject.printFraction();
cout << " OR ";
secondObject.printDecimal();
cout << endl;

secondObject.setRational(-18,-24);

cout << " New value of secondObject is ";
secondObject.printFraction();
cout << " OR ";
secondObject.printDecimal();
cout << endl;

//// now test multiplication
Rational result;
secondObject.setRational(4,3);
result = multiply(myObject, secondObject);

myObject.printFraction();
cout << " multiplied by ";
secondObject.printFraction();
cout << " is ";
result.printFraction();
cout << endl;

return 0;
} // end main

angel83
29-07-2006, 09:23 PM
مساء الخير .....
أرجوا أن تفيدني فيما أذا كنت قد فهمت ما كنت تقصد حضرة المهندس :







# include
<iostream>

# include
<math.h>


using
namespace std;
// First Group

class myComplex **

public:
MyComplex (double x1=0, double y1=0);
MyComplex (const MyComplex& z);
~MyComplex(void);
double getX()const;
double getY()const;
double getModule()const;
double getAngle()const;
void setX(double x1);
void setY(double y1);
void read();
void print()const;

private:
double x;
double y;
};
MyComplex::MyComplex( double x1,double y1)
**
X=x1;
Y=y1;

read (Y);
}

MyComplex:: MyComplex(const MyComplex& z)

**
return MyComplex(X,Y);
}

double MyComplex::getX()const

**
return X;
}

double MyComplex::getY()const

**
return Y;
}

double MyComplex::getModule()const

**
return Module;
}

double MyComplex::getAngle()const

**
return Angle;
}

void MyComplex::setX(double x1)
**
X=x1;
}

void MyComplex::setY(double y1)
**
Y=y1;
}

void MyComplex::read()
**
cout<<"Enter an Imagin Number:";

cin>>Y;
}

void print()const

**
double Module=sqrt(X*X+Y*Y);
double m;
if((cos(m)==X/Module)&&(sin(m)==Y/Module));
** Angle=m;}
cout<<X<<"+j<<y<<endl;// X+jY

cout<<"("<<Module<<","<<Angle<<endl; // (r,m)

}

double main ()
**
MyComples myObject;
cout<<"Z="<<X<<"+j"<<Y<<endl;
~MyComplex(void);
cout<<"OR"<<endl;
cout<<"Z="<<Module<<"e^(j"<<Angle<<")"<<endl;
return O;
} //End Of First Group

















وأرجوا أن تخبرني أكثر عن الهادم وعن تعليمه الأدخال أو القراءة ...
ولماذا أن نعرف الداله خارج البرنامج أفضل وكيف نعرفها داخل البرنامج
وشكرا لك ...

منطلق بطموحي
04-08-2006, 12:22 AM
السلام عليكم:

اول اعتذر عن التاخير و لكن لانشغالي قليلا...

اولا اليك تصحيح الكود الذي وضعتيه و من ثم التعليقات ...

#include<iostream>
#include<cmath>
using namespace std;
// First Group

class MyComplex **

public:
MyComplex (double x1=0, double y1=0);
MyComplex (const MyComplex& z);
//~MyComplex(void);
double getX()const;
double getY()const;
double getModule()const;
double getAngle()const;
void setX(double x1);
void setY(double y1);
void read();
void print();

private:
double x;
double y;
double Angle,Module;
};
MyComplex::MyComplex( double x1,double y1)
**
x=x1;
y=y1;

//read ();
}

/*MyComplex:: MyComplex(const MyComplex& z)

**

}*/

double MyComplex::getX()const

**
return x;
}

double MyComplex::getY()const

**
return y;
}

double MyComplex::getModule()const

**
return Module;
}

double MyComplex::getAngle()const

**
return Angle;
}

void MyComplex::setX(double x1)
**
x=x1;
}

void MyComplex::setY(double y1)
**
y=y1;
}

void MyComplex::read()
**
cout<<"Enter the real part"<<endl;
cin>>x;
cout<<"Enter an Imaginary part"<<endl;

cin>>y;
}

void MyComplex:: print()

**
double Module=sqrt(x*x+y*y);
double m;
//if((cos(m)==x/Module)&&(sin(m)==y/Module))
//** Angle=m;}
cout<<"The a+bj representation = ";
cout<<x<<"+j"<<y<<endl; // X+jY
m=atan(y/x);

cout<<"The <r,m> representation is : ";

cout<<"("<<Module<<","<<m<<")"<<endl; // (r,m)

}

double main ()
**
MyComplex myObject;
myObject.read();
myObject.print();
//~MyComplex(void);
//cout<<"OR"<<endl;
//cout<<"Z="<<myObject.Module<<"e^(j"<<myObject.Angle<<")"<<endl;
return 0;
} //End Of First Group




الكود كان به أخطاء كثيرة و لا اتذكرها جميعا ( لاني اعمل ترجمة و اصحح ) ...و لكن اليك بعض التعليقات :

1. طريقة كتابة المكتبات يجب ان تكون متصلة فمثلا #include<iostream> فلا نضع كل منها في سطر كما تم وضعه
2.تم تصحيح أخطاء املائية كمثل return O و من المفترض ان تكون return 0
3.عند تعريف المتغيرات بحروف كبيرة مثلا X يجب استعمالها بالبرنامج كما هي اي ان لغة ال C++ حساسة للحروف Case sensitive
4.الدالة print وظيفتها الطباعة و ليست ارجاع قيم و لا حاجة لكونها constant ثابتة و بالاساس يعتبر هذا خطأ اي يجب الحذر اكثر و لا نستعمل constant الا عند الحاجة لذلك
5.ال Constructors ( لا اعرف اسمه بالعربية ! الباني يمكن ) بالبرنامج ينقسم الى نوعين هما constructor و يكون بنفس اسم ال class في حالتنا MyComplex اما النوع الاخر فهو ايضا بنفس الاسم وظيفته اخرى و اسمه ال copy constructor اي يقوم بالنسخ
6.قمت بعمل تعليق ل copy constructor اي وضعته بين /* */ لانه لا حاجة له ببرنامجك و لكن كتدريب قومي بتصميمه
7.لا حاجة لهادم ببرنامجك Destrctor و الهادم يقوم بتخليص البرنامج ( اي تخليص الذاكرة و مسحها ) و يكون مطلوب جدا اذا كان الصف class يتعامل مع pointers اي مؤشرات و هنا يكون استخدامه واجب و ضروري(ايضا كتدريب قومي بتصميمه)
8.لماذا يتم مناداة الدالة read بداخل ال constructor ( وضعتها لك كتعليق )
9.هناك أخطاء في ال main function لم امسحها انما وضعتها كتعليق // لكي تشاهديها
10. الان بالنسبة للصفوف ليست مالبرمجة العادية في ال main function نحن نستدعي دالة عن طريق object و لذلك تسمى بالبرمجة الكائنية OOP فمثلا لو اردت قراءة عن طريق read اقول myObject.read() كما فعلت بالبرنامج
11.اخر ما اتذكره من تصحيحات ان طريقة عرض العدد المركب بطريقة قطبية polar form يجب ان لا تكون على الشكل cexp(jm) التي تم استعمالها ببرنامجك و انما ( الطوال , الزاوية ) و عند الرجوع للرياضيات فان الزاوية = taninverse(b/a) اي ظا^-1 (ب ظ أ ) و الدالة جاهزة من دوال cmath و هي atan التي قد تم استعمالها ( علما ان الزاوية ستظهر بالبرنامج زاوية بقياس ال rad التي يستعملها ال C++ ...يمكنك التاكد من الحل بالالة الحاسبة و قد قمت بذلك و كان صحيح 100 % )
wafk

angel83
06-08-2006, 03:26 PM
أهلا أخي منطلق بطموحي ....
أن كان على المكتبات فأنا كتبتها متصلا .. ولكن لم تظهر هكذا .....
وأن كان على return 0 فنحن نقصد بالصفر وليس حرف ...أليس كذلك ...
أما على المكتبه cmath فأنا بصراحه لا أعلم بوجود مثلها تحقق لنا التصريح عن تابع جاهز وهو أيجاد زاوية عدد عقدي ...وكما أتضح لي من المقرر لدي بعد أن قمت بدراسته مجددا كي أستفسر عن بعض الأمور التي أتضحت لي
من برنامجك عن الأعداد العقديه أنه لم يذكر عنها شيء ...سوى أنه في أحد أمثلتها ورد التابع math.h فضننت أنها المكتبه الخاصه بكل ما يتعلق بالرياضيات ولم يخطرليس أنه يوجد مكتبات أخرى تتكلم عن التصريح عن علاقات أخرى بالرياضيات ...فأرجوا ان تعذرني على أخطائي لأني صدقا لم أتانولها أثناء دراستي للآن ...ولا أدري لم طلبت هذه الوظيفة طالما أنه للآن لم نتعرف على المكتبات والتوابع و الأفعال بشكل كامل و واضح ...
فأرجوا أن تعذرني على أخطائي وأعدك أن أبذل جهدا أكبر بالبرنامج القادم الذي سأكتب الوظيفة كاملة دون أجزاء ...
بعدا أن فهمت منك ما كان غامظا و خاطئا لدي ... وأرجوا أن تفيدني عندما أكتبها هنا ...
وأشكرا مرة أخرى على مساعدتك لي ..اظن أني أهدر من وقتك الكثير فأرجوا المعذرة ....
tknk@@

Mr.Time1
06-08-2006, 09:56 PM
استاذي angle83
سأقوم بتقديم ملاحظات عن البرمجة اتمنى ان تستفيد منها
1- عندما ننتهي من دالة main يجل ان نكتب return 0 والتي تعني الخروج الطبيعي من البرنامج
ويمكن الاستغناء عنها بكتابة كلمة void قبل اسم دالة main
اي void main
2-في البرمجة الغرضية يوجد شئ اسمه التابع البناء وشئ يسمى التابع الهادم
التابع البناء هو اول مايستدعى من الغرض (الصف يسمى بالغرض بأغلب الكتب) اما التابع الهدام آخر مايستدعى
التابع البناء يكون له نفس اسم الغرض اما التابع الهدام يكون نفس اسم الغرض مسبوقاً بعلامة ~
أي لو كان لدينا غرض اسمه Time
التابع البناء يكون: Time()
التابع الهدام يكون:~Time()

التابع البناء يمكن أن يأخذ وسائط (قيم) مثلاً
Time(int , int)

ولكن لا يعيد أي قيم
التابع الهدام لا يأخذ وسائط ولا يعيد اي قيم

مالفائدة من التابع البناء والهدام؟
التابع البناء ان لم تقوم بكتابته فسيقوم المترجم ببناء تابع بناء افتراضيا , لذلك يستحسن ان نقوم نحن بتصميمه وتعتبر هذه (من العادات البرمجية الجيدة)
لو افترضنا اننا قمنا بتصميم غرض اسمه Time
فعندما نصرح عنه في mainنكتب
Time d;

هنا تم استدعاء التابع البناء افتراضيا حتى وان لم نصممه .
لو صممنا غرض Aliيحتوي على تابع بناء يأخذ وسط وحيد وتابع اخرprint يقوم بأي عمل
فعندما نستدعيه في main نقول
Ali d(5);
كما تشاهد هنا اعطينا قيمة لـ d لانه تم استدعاء التابع البناء فتراضيا
اما للوصول إلى print فيكون بطريقة dot (.)
d.print();


من فوائد التابع البناء انه يقوم باعطاء قيم ابتدائية لمعطيات الثابته (ستفهم ذلك اذا وصلت إلى المعطيات الثابتة) ولا يمكن ذلك الا من خلال التابع البناء

بالنسبة للتابع الهدام
كما قلنا التابع البناء لا يأخذ قيم ولا يعيد قيم , ولكن يمكن له ان يعمل وضائف اخرى مثل ان يطبع مثلا ً او ان يقوم بعملية الحذف الديناميكي(يمكنك حفظ المعلومة حالياً ,إلى ان تقوم بالوصول إلى الحذف الديناميكي بدراستك)

سأعطيك مثال الان عبارة عن غرض يحتوي على تابع بناء وهدام ونشاهد ما سيحدث :
يقوم الغرض بالحصول على قيمة من خلال التابع البناء ويقوم التابع البناء بأعطاء القيمة إلى المعطى x

يقوم التابع print بطباعة قيمة x ضرب 2
بمجرد انتهاء المجال الخاص في الدالة main سيتم استدعاء التابع الهدام وللتأكد من ذلك سيتم طباعة النص
Time1 is destoryed
لتتأكد من ان التابع الهدام تم استدعائه



#include<iostream>
using namespace std;
class Time1
**
public:
Time1(int=0);// تابع بناء يعطي قيمة ابتدائية
~Time1();//تابع هدام
print();
private:
int x;
};
Time1::Time1(int a)//كتابة جسم التابع البناء
**
x=a;
}
Time1::print()
**
cout<<x*2<<endl;
}
Time1::~Time1()//يقوم التابع الهدام بطباعة نص
**
cout<<"Time1 is destoryed"<<endl;
}
main()
**
Time1 d(5);//اعطاء القيمة إلى تابع البناء الذي تم استدعائه افتراضيا

d.print();
return 0;
}
//بمجرد انتهاء المجال سيتم استدعاء تابع الهدم

سيتم طباعة القيمة 10
ومن ثم سيتم طباعة نص Time1 is destoryed


هذا والله أعلم

angel83
06-08-2006, 10:33 PM
وفقك الله أخي على معلوماتك وأيضاحاتك ....
زدتني سرورا بمرورك .....
وشكرا على المعلومات ... جزاك الله كل الخير حضرة المهندس Mr.Time1

greet

sedeek
07-08-2006, 03:59 PM
هو محدش يعرف يعمل برنامج بحيث عند تشغيل اغاني او موسيقى على الجهاز يخرج لهه رسالة تمنعه من ذلك خلاص الخبرات توقفت امام هذا البرنامج انا مش لاقي حل حد يساعدني يا مبرمجين يا جماعه حد يوريني الدماغ العاليه في البرمجه

angel83
07-08-2006, 05:38 PM
أهلا أخي أو أختي ....
تكرم عينك ..
بس ممكن تخبرني شو يلي بدك ياه بالتفصيل ...
يلي فهمته بدك برنامج يساعدك أن مل ابدك تفتح برنامج اغاني تظهرلك رسالة تمنعك من فتحه ...

أخبرني لأساعدك....

angel83
09-08-2006, 07:08 AM
صباح الخير ....
حاولت بالبرنامج كثيرا ولكن من الصعب جدا المحاوله بشكل جيد ..
وكل الذي قد فعلته هون أني قمت بقراءة برنامجك مهندس منطلق بطموحي
وفهمت أين تكمن اخطائي ....
ولكن ....
عذرا ولكني لا أعلم كيف سأقوم بربط المجموعات بفس البرنامج فهل أكتفي بذكر المكتية الترويسه أم أنه يجب ان ابدأ من جديد وهل يجوز أيعادت ذكر الصف ولكن بموسطات مختلفه النمط عن السابق
ولو أردت أن أذكر زيادة التحميل من نمط <<أو>> فلماذا أجعلها توابع صديقه وليس أعضاء وماذا يعني ...
double operator [] (int i)const
أنه سنكتب الأعداد العدية بشكل متسلسل أم ماذا ...
وهذا هو البرنامج ...

وشكرا جزيلا ...
رانيــــــــــــــا.....

Mr.Time1
09-08-2006, 02:04 PM
رانيـــــــــــــــــــــــــــــا (ياطول الاسم)

اوكي سنبدأ
عذرا ولكني لا أعلم كيف سأقوم بربط المجموعات بفس البرنامج فهل أكتفي بذكر المكتية الترويسه أم أنه يجب ان ابدأ من جديد وهل يجوز أيعادت ذكر الصف ولكن بموسطات مختلفه النمط عن السابق


لم افهم مالمقصود بالمجموعات ؟!

ولو أردت أن أذكر زيادة التحميل من نمط <<أو>> فلماذا أجعلها توابع صديقه وليس أعضاء وماذا يعني


حسنا هل تعلمي ماهو استدعاء التابع >> مثلاً
عندما يكون لدينا صف اسمه Ali وعرفنا فيه العملية >>
وكان لدينا غرض اسمه d من الصف Ali
فعندما نقول cout<<d
فكأننا نقول:
opreator (cout,d)

لذلك تم التعريف عنها بانها تابع غير عضو (تابع صديق) لانها تأخذ وسيطين الاول هو نفس نمط cout
وهو ostream

نأتي الان لفقرة يجب ان تشبعي نفسكي منها .
مالفرق بين تعريف العمليات على انها توابع اعضاء او غير اعضاء (صديقة) ؟!
عندما يكون التابع عضو فيجب ان يكون الوسط الأيسر من العملية غرض او عنوان لغرض من اغراض العملية ,اما عندما يكون الغرض من صف مختلف (كما هو الحال في عمليتي الدخل والخرج ) فيجب تعريفها على انها صديقة
وقد لاحظتي بأن عمليتي الدخل والخرج يكون الاغراض فيها من صفوف مختلفة
ostream و istream

بالنسبة operator [] (int i)const
فهذه العملية تستخدم بالعاده مع المصفوفات فعندما نقول
x[3]
فسيطبع لنا العنصر الثالث من المصفوفة

اما بالنسبة لكتابة الكود لهذه العملية
سأقوم حاليا بكتابة كود لهذه العملية على صف اسمه array

يوجد صف اسمه array
يحتوي على اعضاء خاصه الاول اسمه size والاخر اسمه p
int size
int *p
size يمثل حجمه المصفوفة
*p يقوم بانشاء المصفوفة وذلك ديناميكيا

int &array::operator [](int x)
**
if(x<0||x>=size)
**
cout<<"errore";
exit(1);
}
return p[x];
}



عندما نقوم بكتابة [3]
فسيتم استدعاء التابع الخاص بالعملية
وسيقارن اذا كان العدد الذي ادخله اقل من صفر او اكبر من حجم المصفوفة فسيخرج ويعطي رسالة خطا
في خلاف ذلك فسيتم اعادة العنصر من المصفوفة

نأتي الان للحديث عن كيفية استدعاء هذا التابع
array d
ولو قلنا
d[3]

عندها كأننا نقول
d.operator [] (3);


اااااااا اوكي
اتمنى ان تكون الفكرة واضحه

بالنسبة لتعريف التوابع لعمليتي الدخل والخرج
يجب ان تعرفي العمليتين في الصف على انها اصدقاء اولا
ويجب ان تستعدي من ملف iostream
istream و ostream

#include<iostream>
using std::ostream;
using std::istream;



سنعرف الان العمليتين على صف array
عملية الخرج

ostream operator<<(ostream &output,array &d)
**
for(int i=0;i<d.size;i++)
**
output<<d.p[i]<<endl;
}
return output;
}



istream operator>>(istream&input,array &d)
**
for(int i=0;i<d.size;i++)
input>>d.p[i];
return input;
}





وهذه عملية الدخل

هذا والله اعلم

angel83
09-08-2006, 04:50 PM
Mr.Time1
أهلا بك أخي وشكرا على الشرح وأظن أنني فهمت ما معنا التوابع الصديقة ...
ولكن لو أنك نظرت الى مشاركتي الثانيه أو الرابعه على ما أظن
ونظرت للبرنامج الذي حاولت أن أنجزه ...
لعرفت ما كنت أقصد بأسئلتي ...
وبالنسبه للمصفوفه ... فانا ما أطلبه هو كيف سأقوم بخلق مصفوفه لهذه الأعداد المركبه ...
بأن أجعل رقم المصفوفه صفر تقابل الجزء الحقيقي ...و1 الجزء التخيلي هكذا فهمت من الطلب و تواليك ...
وكيف سيكون الربط بين المجموعه الأولى التي تعرف التابع العقدي ... والثانيه التي تجري عمليات على التوابع ...
و الثالثه التوابع الأعضاء ...
ما هي الصيغه التي تربط بينهم ... أم اننا لا نحتاج لصيغه للربط ولا نحتاج لذكر الترويسه من جديد ...
أرجوا المساعدة فانا في حير ةمن البرنامج وانه للمرة الثانيه يعيده الدكتور لي بسبب الأخطاء الكثيره به ...ويطالبني بأن أعيد المحاوله...وشكرا..
رانيـــــا .... tnks

angel83
09-08-2006, 04:52 PM
البرنامج المطلوب في المشاركة الرابعه أخي ... مستر تايم ون
رانيــــا....

Mr.Time1
09-08-2006, 05:31 PM
على حسب ماافهمت من التعليق الي مكتوب بجانب العملية [ ] في الوظيفة
اعتقد ان المطلوب هو اعادة القيمة x في حال كان العدد داخل العملية صفر واعادة Y في حال كان العدد خلاف ذلك

هل هذا المطلوب فعلاً؟!
اذا كان كذلك فسيكون الحل بسيط جدا


double &MyComplex::operator [](int i)
**
if(i==0)
return x;
else
return y;
}


ملاحظة : بعد ان اطلعت على الحل الذي كتبتيه ,, رأيت بأنكي قمت بتعريف الصف اولا ثم استدعيتي دالة main ثم عرفتي الصف من جديد وكتبتي به العمليات ثم استدعيتي دالة main مرة اخرى,, هل هذا خطأ مطبعي ام انه الحل الذي قدمتيه ؟!

يجدر بك تعريف التوابع الصديقة اولا ثم تعريف التوابع العامة ومنها العمليات ثم المعطيات الخاصة
ثم تستدعي كل تابع عن طريق العملية ::
ثم تنفذي البرنامج في main
لماذا اعادة الترويسة؟

angel83
10-08-2006, 01:41 AM
طب كيف لازم أخرج هذه العمليات على الأعداد العقدية ...
هل سأدخلها في جسم التابع وكيف ...كيف أطبعها ...
والتوابع الصديق هنا ما الهدف منها لما طلبت .. ولماذا الأرجاع ..& .. وما القصد ب ..
MyComplex operator!(void
والذي لم أفهمه كيف سأستدعي العمليات على الأعداد العقديه للخرج
هكذا :
MyComplex MyComplex :: operator + (const MyComplex& z);
**
return MyComplex(x+x.z , y+y.z);
}


cout<<"Z+="<<x+xz<<"+j"<<y+yz<<endl
MyComplex MyComplex :: operator - (const MyComplex& z);
**
return MyComplex(x-x.z , y-y.z);
}

cout<<"Z-="<<x-xz<<"+j"<<y-yz<<endl

......ألخ طبعا أضعا في جسم التابع أم أني خاطئه ..
وهل هكذا كنت تقصد أن يكون الترتيب ... في البرنامج طبعا ..
في الملف المرفق من فضلك .....



أعلم اني قد أتعبتك ولكني صدقا لم أفهم ما المطلوب حقا .. ولم أتمكن من ال c++ جيدا للأن ...


وشكرا لك ....
رانيــــا.....

Mr.Time1
10-08-2006, 04:00 AM
رانيــــــــا

هذه العمليات مع الغرض تتعاملي معها تماما مثل ماتتعاملي مع العمليات مع المتغيرات
اعرف بأنكي لم تفهمي قصدي لكن انا متأكد باني لن اخرج من هذا الرد الا والفكرة قد فهمت في ذهنك

بشأن الترتيب الي كتبتيه فنعم هذا هو الترتيب الصحيح .. (لكن هذه من العادات البرمجية الجيده.. ليست شرطا ,,لا تغضبي كثيرا فنصف حل المسألة من خلال هذا الترتيب)

سننظر الان اإلى نهاية حل المسألة المعقدة

سأعدل البرنامج وارفقه

اوف 102 خطأ
سأناقش لاحقا معك كل الاخطاء لكن الان حاولي ان تعدلي المطلوب
واقرأي الاسطر جيدا .. سطر سطر لانه لا يوجد سطر بدون تعديل
الان البرنامج يحتوي على خطأ واحد وهو دالة atan حاولي ان تعدليها ايضا اكتبي المعادلة الخاصة بعملية ! وان لم تستطيعي احضري لي المعادلة الرياضية وانا اكتبها لك ومن ثم جربي البرنامج

اقرأي التعليقات جميعها لاني كتبت لك تعليقات كثيرة

وبالتوفيق

وبالتوفيق (عارف اني كتبتها مرتين لا تحسبيها خطأ مطبعي)

angel83
11-08-2006, 03:24 AM
حسنا هاك المعادله الطلوبه هي أيجاد الجذور للعدد العقدي ...
وها هو البرنامج .....
أرجوا التعليق سيد Mr.Time1

tknk@@

رانيــــا.....

angel83
11-08-2006, 03:40 AM
لم أنسى أنك قلت لي أنه يوجد خطأ في التابع atan
ولكن ما هو ... هل تقصد وضع الأقواس حول r,m
أم أنه هناك شيء لا أفهمه
وعندما طلبنا التوابع الصديقه طلبناها كي نقوم بطباعهخ اعلمليات على الأعداد العقدية صحيح
ولماذا لم تملأ التابع الأساسي ... ولماذا ... ولماذا .....
lama#$
angry+!:

Mr.Time1
11-08-2006, 04:20 AM
بالنسبة للاخطاء في البرنامج
وضحتها من خلال التعليقات (لم اتأكد ان كنت قد اوضحت جميع الاخطاء)
حملي البرنامج الموضح للاخطاء

لاتقلقي الاخطاء بسيطة
الاول في دالة atan

الثاني في المعادلة المسندة لـ K
رانيا الدالة الخاصة بالقوى تسمى pow وليست power
عدليها من power إلى pow

الثالث يكمن في المعادلة المرفقة لـ p
فلا تتم معادلة بهذه الطريقة اقصد انتي لم توضحي العملية بين القوسين
( ) ? ( )
الرابع حلقة التكرار for
لابد ان تأخذ ثلاثة وسطاء
For(1;2;3) //The Style
ألاول يكون بداية العداد .. والثاني شرط التكرار .. والثالث مقدار الزيادة او النقصان

الخامس في else فلا يوجد if لكي نضع else .. لابد من وجودها

السادس لم تغلقي علامة التنصيص الخاصة بطباعة الجملة ERRORE\n
السابع اسم الصف لديك myComplex
وانت قمتي بالتصريح عنه في main بأن اسمه MyComples
والاسمان يختلفان عن بعض .. فلغة سي ++ حساسة وتفرق بين الاحرف الكبيرة والصغيرة
الثامن انتي اشتققتي غرض من الصف واسميتيه myObject
واستدعيتي التوابع بطريقة صحيحة لكن
التابع print استدعيتيه بغرض اسمه Z وهذا غير موجود .

هذا بالنسبة للاخطاء اعتقد طريقة تعديلها بسيطة للغاية ولا يدعي الأمر للتوتر كما هو موضح لي بالصورة الي وضعتيها في ردك السابق (صورة الكومبيوتر)
ايضا
استدعاء التوابع في main هذا امره يجب ان يكون لوحده وسأشرح ذلك لك في اقل من دقيقة لكن عندما اتأكد بأن صفكي من دون اخطاء
هذا وبالتوفيق

ملاحظة: انا اتواجد بفترات كثيرة بهذا المنتدى

angel83
12-08-2006, 08:24 PM
tknk@@
أكيد انا عم عذبك معي ... وأسفي على التأخير ...كان في عطل بالهاتف وهلق مشي الحال ...
وهاد البرنامج من جديد بس نشالله ما يكون فيه شي خطأ .... وأن كان على ATAN فبصراحه ما كنت أعرف الخطأ ..
وسي يو ...

رانيــــــا .....

Mr.Time1
12-08-2006, 10:15 PM
لا يوجد تعب ابدا ً
حسنا
الان يوجد اخطاء بسيطة دالة atan

والمعادلات

p=(1/sqrt(2))*(sqrt(c))+x);
q1=((+1)y/sqrt(2))*(sqrt(c))-x);
q2=((-1)y/sqrt(2))*(sqrt(c))-x);

لم افهم ماذا تعني

(+1)y/sqrt(2)



حاولي ان تتأكدي من الاقواس المفتوحة والمغلقة ,
ايضا حلقة التكرار while لكي تنفذ اكثر من عملية كما هو موضح (سطرين طباعة) لابد من وجود اقواس حاظنة
}

**
لانه في هذه الحالة يتم تنفيذ السطر الاول فقط

ايضا كتابة الكود للعملية ! يوجد فيه خطأ مهم الا وهو :
يجب ان تعيد الدالة قيمة من نوع الغرض او نمط يأخذه الغرض .

angel83
13-08-2006, 02:27 AM
أقصد بالمعدلات أنه
الجذرين للمعادله ...
ففي الرياضيات بعدا ان نقوم بإجاد دلتا والتعويض لمعرفه أمثال المعادله التي مجهولها عدد عقدي

وبالنسبه للتعليمه while
تقصد انه يجب أن تضم جميع الأسطر بين قوسين كبيرين ام أنه يجب أن أعيد العمليه بغير طريقه

وكود العمليه ! هكذا تقصد ....



myComplex myComplex::operator!(void) /*ROOT*/
**
double p,k,c;
double q1;
double q2;
k=pow(x,2)+pow(y,2);
c=sqrt(k);
p=(1/sqrt(2))*(sqrt(c))+x);
q1=((+1)y/sqrt(2))*(sqrt(c))-x);
q2=((-1)y/sqrt(2))*(sqrt(c))-x);
while(x!=0)
**
cout<<"root1="<<p<<"+j"<<q1<<endl;
cout<<"root2="<<p<<"+j"<<q2<<endl;
}
}


فهي تعيد عدد عقدي ....

وذلك حسب حلول المعادله في المرفق ....


وشكرا .....

Mr.Time1
13-08-2006, 04:14 AM
رانيا
الان وصلنا إلى نهاية المطاف صفكي الان شبه صحيح لكن يحتاج طبعا إلى تصحيح وقد ارفقت لكي الصف وفيه التعديلات المطلوبة:

اولا لقد قمت بحذف دالة البناء الثانية والتي تأخذ نفس الصف لانها لم تبرمج (لم تحمل بشكل زائد)
اما ان تكتبي التحميل الزائد لتابع البناء او ان تحذفي التصريح عنها

ثانيا دالة atan تأخذ وسيط واحد وليس اثنين وعلى مااعتقد انه يجب ان تقولي x/y بين القوسين
ثالثا المعادلات:
لم اعرف عملية (+1) مالغرض منها او بالاصح .. كيف لكي ان تتمي مثل هذه العملية .. يجب ان يكون هناك عملية بين (+1) والمتغير بعده
اي عندما كنا نقول في الرياضيات
5(....) فهذا يعني 5 ضرب القوس .. ولكن هذا لا يحدث في لغة سي ++.. لابد من تحديد العملية

رابعا العملية ! يجب ان تعيد قيمة من نفس نمط الصف . كما هو موضح في التصريح , لذلك انا اعتدها إلى this*

اعتقد ان هذا كل مافي الامر .. عدلي ماسبق وعندها تستطيعي ان تجربي البرنامج وتكوني انهيتي هذا البرنامج (السهل)

اتمنى ان ماسبق يكون محفز لكي لتتعلمي اكثر ولا يكون وسيلة لتكرهي هذه اللغة فهي رائعه بالفعل , والصفوف (البرمجة الغرضيةOOP ) ايضا رائعه بالرغم من صعوبتها إلا انها تسهل الكثير وتمكننا من الكثير

انا مستعد لأي مساعدة وفي اي وقت
(حان الوقت لاختار فيلم السهرة)
تمنياتي بالتوفيق
Mr.Time1

angel83
13-08-2006, 03:41 PM
الآن أتضحت الصورة عندي .... شكرا لمعروفك معي يا صديقي ...
من قال أني قد أكرهها ... ولكن سبق أن قلت لكم ززز ان الدكتور لم يكن قد أنهى الدروس بعد
وهو وضع البرنامج كي نقوم بالتحضير للدروس ... وأنا لم أفهم جيدا من دون شرح ...وبفضلكم قد أتضحت الأمور عندي ...
ألا أنه يوجد بعض اللبس في أمور وان لا تمانع بأن أضعها هنا ... علك تساعدني وترشدني ...
لأنني في كل مرة أدرس بها أشياء جديدة أصادف أمور غير مفهومه ... فهل أستطيع ان أجد النصح عندكم ....


وشكرا لك من كل قلبي مستر تايم ون

tknk@@

Mr.Time1
13-08-2006, 09:03 PM
حسنا
الاخت رانيـــا

سررت بتفاعلي معك طوال الفترة السابقة , واتمنى التوفيق لك بحياتك العملية والعلمية

اما عن فعلت الدكتور : فأنا ارى من وجهة نظري ان دراسة لغة سي++ لها منهجية محددة مثلاً:
تبدأ في تعلم البداية في الادخال والاخراج والتعامل مع الارقام وبعدها بنى المعطيات والتحكم مثل جمل الاختيار والجمل الشرطية والتكرار وبعدها الدوال , وبعدها المصفوفات , وبعدها المؤشرات وسلاسل الحروف , وبعدها الصفوف , وبعدها نظرة مفخمة عن الصفوف , وبعدها العمليات على الصفوف , وبعدها الوراثة , وبعدها القوالب, وبعدها تعدد الاشكال , وبعدها التعامل مع الملفات ... إلخ
هذه من وجهة نظري : لان كل درس مرتبط على سابقه.
وحاولي تطوير نفسك بعدم الاعتماد على الدكتور ومراجعه فقط .


اما إن كان لديك اشكالية او لبس في أمر , فلا تترددي في السؤال , وانا ان شاء الله سأكون في العون ,واوضح اللبس لان قاعدتي هي ( " لا تتقيد بالمثال,وانما اصنع لنفسك مثال " )

لذلك يجب ان يكون لديك معرفة عن سبب وضعنا هذه الدالة بهذه الصيغة , وان اردنا ان نكتب برنامج اخر هل يجب ان تكون نفس الصيغة ام غيرها ؟! ومافائدة هذه الصيغة .. هذه اسئلة ناجحة عن نفسي ارحب فيها في اي وقت

اتمنى ان تتواصلي معنا وان لا تتركينا

وعن نفسي تستطيعي التواصل معي اما عن طريق المنتدى , او عن طريق الماسنجر , او عن طريق الرسائل (في حال انقطاعي عن المنتدى ) .



هذا وتقبلي تحياتي
Mr.Time1

angel83
15-08-2006, 06:22 PM
مسااااااااء الخير ....
هل لي أن أطلب المساعدة في بعض التفصيل الصغيرة : :)

ما هو المتحول من نمط صف ... هل هو المتحول ينتمي الى هذا الصف ....
......................
باني تابع النسخ هل هو باني تابع من تابع أخر ...من نفس النمط
.......................

يمكن زيادة تحميل المؤثرات التاليه "+" و "-" و "*" و "&" بشكل أحادي او ثنائي ...
ماذا نقصد بالشكل الأحادي والثنائي .. وماذا تعني *. ومرقت في مثال الأعداد العقدية .*this و sizeof

............................

ومتى نقول return 0 and rturn




وشكرا ...
رانيـــــــــــا ............

Mr.Time1
15-08-2006, 10:30 PM
رانيــا
اهلا مجددا

السؤال الأول:
ما هو المتحول من نمط صف ... هل هو المتحول ينتمي الى هذا الصف ....

ان لم نتمكن فعلا من معرفة الاجابة على هذا السؤال , مافائدة دراستنا للبرمجة الغرضية ؟!

كما تفضلتي يوجد متحول من صف
نسمي الصف بالنمط
اما المتحول فيسمى:
غرض
لذلك سميت بالبرمجة الغرضية , هي برمجة الصفوف لتصبح انماط نتمكن من اشتقاق اغراض منها
Ali d
d هذا غرض
Ali m
m هذا غرض اخر يختلف عن السابق

السؤال الثاني:
اما بالنسبة لباني تابع النسخ . لم افهم مالمطلوب لذلك سأشرح لك الموقف بالتفصيل

دالة البناء هي دالة من نفس اسم الصف يمكن لها ان تأخذ قيم ولكن لا تعيد أي قيمة
لذلك نعتبر دالة البناء من العادات البرمجية الجيده
ان لم نصرح عن دالة بناء فسيتم انشاءها بصورة افتراضيه
لو كان لدينا الصف Ali
ولم نقم بكتابة تابع بناء له
فبمجرد التصريح عن الغرض
Ali d
فسيتم انشاء تابع بناء افتراضيا
اما اذا قمنا بانشاء تابع بناء ياخذ وسيط واحد فوقتها نقول
Ali d(5) or Ali d=5
كما اننا نستطيع ان نصمم تابع بناء اخر يقوم بأخذ وسيط مختلف عن الاول , كأن يأخذ وسيط من نوع char*
فنقول
Ali d=5
أو
Ali d="Mr.Time1" //ok
اي انه اذا كان لدينا نسختين من تابع بناء كل منها تأخذ وسيط مختلف عن الاخر ولديها وظائف مختلفه , وقتها عندما نصرح عن غرض من الصف لابد ان نعطيه قيمة تتقبل احد الوسيطين

السؤال الثالث:
اعتقد انك لا تعلمين مالفرق بين العمليات الثنائية والعمليات الاحادية
حسنا
العمليات الاحادية ماذا تعني ؟!
من اسمهى احاديه اي انها تتعامل مع كائن واحد
مثلا ً : ++ , _ _
اما العمليات الثنائية:
فهي تتعامل مع كائنين اثنين
مثلا ً : +,*,/

هل يوجد عملية ثلاثية ؟!
نعم يوجد
عملية :؟
العملية الشرطية الثلاثية

الان يمكن لنا ان نحمل بعض العمليات مثل + , _ بشكلين احادي او ثنائي
بحيث تتعامل مع كائن واحد او كائنين
اما عن كيفية ذلك , فيكون عن طريق الوسطاء في العملية

sizeof a
يقوم بايجاد حجم a اي يقوم بايجاد حجم ا لبيانات بالبايت
او حجم نمط sizeof(int)//ok
من الممكن ان يكون النمط هو صف من تصميمنا نحن
sizeof(Ali)//ok

this*
هو الغرض نفسه وليس الصف انما الغرض
السؤال الاخير:
يجب على الدوال ان تعيد قيم مهما كانت
مثل bool void int
اما بالنسبة لـ return فهي القيمة المعادة ,, تستخدم الكلمة return مع (العودية في الدوال)
اما return 0 فهي تعني الخروج الطبيعي من البرنامج

اتمنى ان يكون في ذلك ردا على تساؤلاتك

هذا والله اعلم

مع تمنياتي بالتوفيق

angel83
16-08-2006, 11:51 AM
tknk@@
والله كتيييييييييير أنت مزوق مستر تايم ون ....
عم عذبك معي ....
ومرسيييييييييييييييييييييييي .........

تحياتي ...
رانيـــــــــــــــــا.................

أبو الوليد
16-08-2006, 12:08 PM
bismilah

السلام عليكم


والله يا شباب مشكورين على هذا النشاط والنقاش الفعال بصراحة قد أثريت المنتدى أرجوا الاستمرار في النقاش والحوار وتبادل الافكار وأنا أشكر الجميع سواء من سئل وأثار المسئله وسواء من كلف نفسه العناء وأستقطع من وقته وأجاب على الاسئله بارك الله فيكم وجعلكم منارة من منارات العلم ونفع بكم الامة

wafk

Mr.Time1
16-08-2006, 01:52 PM
استاذه رانيا
العفو واهلا بيك ِ بأي وقت

اهلا بيك استاذ ابو الوليد

وان شاء الله يكون لحوارنا هذا رد على تساؤلات مستقبلية

وكلنا نتعلم ماافي انسان وولد ويحمل العلم بين ذراعيه


وسأحاول الرد على التساؤلات في هذا المنتدى ان شاء الله مدامها قريبه او من مدى معرفتي
واشكرك مرة اخرى على متابعتنا
تحياتي لك

angel83
16-08-2006, 03:17 PM
أستاذ أبو الوليـــــــــد....
أهلا بك وسررت بالتعرف عليك بتشجيعك لنا .......
تقبل تحياتي و احترامي ..


مستر تايم ون .... أعلم أني غليظة ولكن صدقني لا أجد من يتقبلني دائما....
فأسئلتي الله أعلم كثيرة ....

angel83
16-08-2006, 03:28 PM
أسفه ولكن هنالك تمارين لم أستطع فهمها جيدا ...
وهي عن المؤشرات .... أسناد قيمه لمؤشر و كيفية الوصول للعنوان ....
وعن الكومه أوheap
في الملف المرفق يوجد بعض التمارين أو بالأحرى كيفية عمل التعليمات عن طريق
رسم اشكال ...فكيف تم حلها ...
فمرة تكون الكومة مفتوحه ومرة مغلقه لما هكذا .... أرجو التوضيح أيضا ... لإانا لم أستطع متابعه الدرس لأنه معتمد على هذه التمارين فيجب ان أتقنها قبل أن أتابع ...

أرجوا التوضيح .....

Mr.Time1
16-08-2006, 04:23 PM
رانيــا اهلا بيك مجددا
وهل وجدتي اخيرا من يتقبلك !!
يا ألف مرحبا بيكي


ماهي المؤشرات
pointer
؟
int x=10
هذه التعليمة سيتم من خلالها حجز متغير حجمه 4 بايت وسيتم اعطاء 10 كقيمة إلى المتغير x

int *p=&x
في هذا قمنا بإضافة عنوان المتغير في الذاكرة إلى المؤشر p
عندها اذا اردنا طباعة p سيطبع ماذا ؟!
سيطبع عنوان x
ولو اردنا طباعة p* سيطبع 10

ايضا لو قلنا
p*=40
وطبعنا x
ستطبع 40


نأتي الان إلى heap
هذا الجزأ نظري(اتمنى من الان ..اذا لم تصلي إلى هذا الجزأ ان تتركيه ولا تعودي له الا اذا وصلتي له )
كما تعلمي الذاكرة مقسمه إلى جزأين : الاول يسمى مقطع البيانات وفيه نحجز المتغيرات مثل حجزنا x
هذه الذاكرة غير كافية لحجز متغيرات كثيرة في البرنامج
الثاني: يسمى heap هذه الذاكرة هي ماتبقى من ram وهي كبيرة جدا لكن!!
لكي نحجز بها نستخدم الحجز الديناميكي والتحرير الديناميكي
(اذا لم تجيدي التعامل مع التحرير والحجز الديناميكي فانصحك في نسيان التفكير في هذا حاليا والاكتفاء بحفظ المعلومة فقط .. وعندما يحين وقت تعلم ذلك تتعلميه )

من خلال الحجز لا نتمكن من تحديد القيم والوصول إليها الا من خلال المؤشرات

نعود مرة اخرى :
من خلال الرسوم التي اطلعت عليه ,, هي تفسر بشكل رسومي الكلام الي قلته قبل قليل عن الاعلان عن المؤشرات والمتغيرات واسناد القيم والعناوين ولكن لا اعتقد بأنها واضحه .وهي تزيد الأمر تعقيدا

لكن يكتفي ان تعلمي بأن المؤشر يأخي عنوان والمؤشر من غير علامة * يكون عنوان ,, والعلامة * تقوم بايجاد القيمة التي يهدف لها العنوان

نستفيد من المؤشرات في :
انشاء مصفوفة متغيرة الحجم
التعامل مع النصوص
مصفوفة سلاسل الحروف
الحجز والتحرير الديناميكي
التعامل مع الدوال
إلخ

هذا والله اعلم

مع تحياتي

angel83
03-09-2006, 01:02 PM
هاي ....

أنا أشتقتلكم ....

ما بعرف أذا أنتوا أشتقتولي ...
بس أكيد أنا مو بخاطري غبت
بس والله الموقع ما كان يفتح معي ... ولأسباب أتضحت ألي بعدين أن حسب أشتراك النت ...

وهلق أنشالله رجعتلكم ....
بتستقبلوني ولا بفل ...tk3







شو ما سمعت منيح ...:mad:
بسيطا أنا رايحا ....



بس راجعا ...laughtk#2

منطلق بطموحي
03-09-2006, 03:09 PM
مرحبا بك اختي دائما ...

نفس المشكلة كانت تحدث معي خلال الاسابيع الماضيه و لكن حلت المشكلة من تلقاء نفسها...

يبدو ان المنتدى اراد ان يرتاح من مشاركاتنا shamw#

لكن نحن له بالمرصاد :p


بانتظار مشاركاتك معنا ...

Mr.Time1
03-09-2006, 04:01 PM
لا اعتقد ان المنتدى يريد ان يرتاح من مشاركاتك استاذي منطلق بطموحي ولكن على حسب ظني انه مل من الفترة الطويلة التي غبت عنه لذلك حاول اقفال نفسه !!

على العموم اليوم عيد على المنتدى .. عودة كلا من
منطلق بطموحي +angel83

angel83 على فكرة رانيا .. اي اخبار الاعداد العقدية معك !! سلمتي الوظيفة ؟!

على العموم يا ألف هلا بيكم
واخير راح ترجع روح القسم للمنتدى
تحياتي
Mr.Time1

angel83
03-09-2006, 05:23 PM
أستاذ منطلق بطموحي ...بتصدق لهلق ما عرفت أسمك ....
بس بجد أشتقتلكم والله ...


وهي نكتة تكرم عينكم ..
في مهندس كمبيوتر عم يعملولوا فحص دم ....
فطلعت زمرة دمه .... : xp



أهلين أستاذ Mr.Time1
واللهي زمان ... أكيد أشتقتلي وأشتقت لأسئلتي الكتيري ... ولمسائلي المستعصيه دوما ...
أما الوظيفي ...أولا بنقل إلك سلام من الدكتورة .... وتانيا كتيييير يسلموا قبلوا الوظيفي أخيرا مني
وقالتلي وأخيرا صرتي تفهم شوي ... لأن عرفت أن أنت يلي ساعدتني وتحملت غلاظتي لحتى حليت الوظيفي منيح
وبالمقابل هي بتشكرك وبسلم عليك ....وبتقلك تتحملي لحتى طالع المادي بمعدل .. مع أن مو كتير متأملي فيني أنجح
بس قالت بمساعدتك ومساعدت الأخرين ممكن ...( بعرف أن هي بهدلي ألي بس ما على الرسول إلا البلاغ .. وعلى فكرة أنا بعتلك اليوم ميل سريبراااااااايز على ميلك يلي مكتوب بالتوقيع تبعك .. ما بعرف أذا وصل )


بتعرفوا واللهي حبيت التعامل معكم .. وبتمنى مرة تاني تسألوا عني بس غيب
مو أطنشوني ...

أختكم ... رانيــــــــــا.......tknk@@

Mr.Time1
03-09-2006, 07:14 PM
اهلا استاذه رانيــا
طبعا اشتقنا لك ولاسئلتك ..ولمسائلك البسيطة .

والف مبروك على قبول الوظيفة وان شاء الله تعدي المادة على خير وبتقدير مرتفع يارب
وانا جاهز ومستعد للمساعدة بأي وقت , وعندها سأقول اهلا بيكي. halatkn

اما بخصوص الايميل شيكت عليه عدة مرات ولم يصلني اي ايميل لهذا اليوم منك ِ .
في انتضار الـسريبراااااااايزtk3

تحياتي

angel83
03-09-2006, 08:58 PM
أهلين مستر تايم ..
أكيد وصلت وبتكون بالجنك ميل بتصور ...
بس ولا يهمك هلق ببعتلك ميل تاني ....

يا ميت هلا والله ...

رانيــــــا.......

Mr.Time1
03-09-2006, 10:49 PM
اوكي انا بانتضار الايميل وانتضار الـسريبراااااااايز.. للحين ماوصل شئ لا على الـinbox ولا على الـ junkE-Maillaughtk#2
الفضول بدا يزداد عندي icon@#s

angel83
03-09-2006, 11:37 PM
والله خايفي ما عاد تجي لهون لما أتشوف السريبراااااااايز

الله يسترlaughtk#2

Mr.Time1
04-09-2006, 12:16 AM
خلاص مااقدر استنى اكتر من كذا angry+!:
مابتخافي انا موجود هنا على طول .. ايش ماكان نوع السريبراااااااايزlaughtk#2
للحين ماوصل اي شئ ..

angel83
04-09-2006, 12:26 AM
shamw# .... لا بلا مزح

brea*&&
خوفي يكون ما أستحمل المفاجأة وقفل أستقبال للإيملات ...
هاد ميلك ولازم تعرف شوبوا ...

hume#@
والله يشي بيحط القعل بالكف ...

Mr.Time1
04-09-2006, 12:36 AM
خلاص خلاص لاتزعلي روحك .. اعتبري الرسالة وصلت خلاص لكن !! icon@#s
ايميلي شغال 100% وقاعد استقبل عليه رسائل
لكن خليني اجرب شئ ثاني
حاولي توضعي الرسالة بملف مضغوط وترفعيه على احد المواقع الخاصة بالرفع .. وترسلي اللينك على الايميل

angel83
04-09-2006, 02:00 AM
:eek: طب أوكي ....
بس خايفي أطرني من المفاجأة ...
وما تعود تحاكيني ..




tk2
على الطريق

angel83
04-09-2006, 06:35 PM
ألحقوااااااااا علييييييييييييييييي ......
halatkn


عندي هوم ووووورك بلييييييييز هلب ..


brea*&&

angel83
04-09-2006, 06:40 PM
على فكرة ... هي هيه السريبرااااااااااااااايز...
نشالله تنال أعجابك ....


tk3


هاد ياي بيفوت على التكنك هيك بيصيبوا .. angry+!: ....


laughtk#2

angel83
04-09-2006, 07:43 PM
هلق حاولت بالصف شوي ....
وما بعرف لو تمام ولا لأ ....








رانيــــــا....

Mr.Time1
04-09-2006, 08:14 PM
اوكي وصلت المفاجأة وسيتم الاطلاع عليها قريبا .
وابدي رأيي

angel83
05-09-2006, 01:30 AM
الله يستر ........ tknk@@

Mr.Time1
05-09-2006, 01:54 AM
من شو خايفه .. الامر طبيعي
وطالما انتي خايفه حتصعبي الحل على نفسك
فما تخافي وايدك بايدنا راح نوصل للحل ان شاء الله
بس محتاجين همه

تحياتي

منطلق بطموحي
05-09-2006, 02:48 AM
على فكرة سؤال ال Polynomial احد الاسئلة الممتعة و ليس بالضرورة السهلة لو تم حلها باستخدام ال Linked Lists ( لا اعرف ان تم التطرق لهذه التقنيه بعد معكم ؟)

فقط يحتاج لتركيز و ان شاء الله سهاله

لي عودة مع الموضوع ...

angel83
05-09-2006, 03:05 PM
واللهي مو خايفي ...بس لما خبرتني وصلت المفاجأة ...
فقلت الله يستر من ردت فعلك على المفاجأة ...


وليش لخاف طالما في وراي مهندسين وحباب متلكم ....


wafk

angel83
05-09-2006, 03:10 PM
أهلا بيك ....
قلتلي ... Linked Lists ....
بتمنا تكون رجعتك قريبي لأن منكم نستفيد ...
دائما بتفتحلي عيوني على شغلات مفيدي وغنيه وبصراحه مو مارقا علي ...

بس راح شوف شو بقدر أجمع أفكار عنها ....
وبرد بخبرك شو عندي معلومات انتظرني ....

tnks

منطلق بطموحي
05-09-2006, 03:36 PM
ان شاء الله ..لدي برنامج برمجته زمان عن ال Polynomial يمكن ان اضع لك منه مقتطفات للمناقشه و كتسهيل لك و توضيح للفكرة اكثر

و هذا موقع ممتاز جدا جدا لتعليم تقنية ال Linked Lists

http://richardbowles.tripod.com/cpp/linklist/linklist.htm

و بالمناسبة هي ليست وظيفة برمجية جديدة انما طريقة للتلاعب بالمؤشرات Pointers و هذا الدرس يعتبر أساس لتعلم هياكل البيانات بلغة ال C++

Mr.Time1
06-09-2006, 04:04 PM
مرحبا
اعتذر عن التأخير بسبب مجموعة اعطال فنية تواجهني مؤخرا
بالنسبة للوظيفة سهلة مافيها شئ وانما هي تكرار لسابقتها , طبعا الجديد هو القوائم المترابطة Linked Lists
لذلك احببت ان اعرف مامدى معرفتك بها (يعني إلى فين توصلتوا فيها )
هذا من ناحية
ومن ناحية اخرى حاولي تجهيز المسألة من ناحية الرياضيات (كثيرة الحدود ) يعني المطلوب وتجريب البرنامج (فكريا فقط) يعني ايش المخرجات الي راح تخرج , وايش المدخلات الي راح ندخلها للحصول على المخرجات (ان وجدت)

فهم المسألة من ناحية رياضية يسهل الامر (على بلاطة انا سئ من ناحية الرياضيات rahe#@ ) اما الباقي فراح اساعدك فيه ان شاء الله , وخطوة بخطوة راح نوصل للحل بحيث تكوني على علم بالخطوات (يعني بأمكان اي شخص انه يحل المسألة لك لكن بدون ان تفهمي كيف تم ذلك ) لك ان شاء الله راح نسعى إلى الاكثر من هذا (حل المسألة مع فهم ايش عملنا نحنا ) وادراك المفاهيم بشكل جيد .

على العموم بالتوفيق :)
ملاحظة ردت فعلي اكيد بتكون طبيعية ,,,,,,لكن تأخر المفاجأة زاد فضولي لا اكثر
وملاحظة تانية : ايش رائيكم بتوقيعي. COCK laughtk#2

angel83
06-09-2006, 07:48 PM
:D .......
أيه يبني جمال التوقيع دا كله ....
بس يلي مش فهماه ... أيه حكيتك يابني انت والديك ...
الله ما تكنش يا بني أنت بتاع أنفلونزا الطيور ...

حاسب ما تعملنا حاجه ... تودينا بدهيه ...
shamw#

angel83
08-09-2006, 01:12 AM
هلق نحنا بهاد الأسبوع لازم ناخد :
الصفوف المركبه وتعلم بناء معطيات كاللوائح
وهو مجرد مثال يطرح فكرة معطيات اللوائح.... وذلك بعد أن أنتهينا من المؤشرات وعلاقتها بالذاكرة الديناميكيه ...

أما شكل كثير الحدود ...

x^a+x^b+x^c+..........+n=0
أما العمليات....
الجمع \طرح :: نجمع\نطرح أمثال الحدود المتساوية بالأس ......
والضرب منضرب بشكل عادي ...
القسمي نفس الشي.....
والله ما بعرف بالتحديد شو راح خبرك عنه....
بصراحه لأن الفحص على الباب بعد أسبوع وأنا مكركبي شوي
فما بعرف شو بدي أعمل......
brea*&&
وكمان عندي 3 وظائف تانين و وحدي منهم بالجافا ....
صدقا محتارة ... هلق ممكن تساعدني بالجافا كماني ولا .... بكون ثقلت عليك ...

Mr.Time1
08-09-2006, 02:29 AM
الصفوف المركبة ؟
اعتقد بأن هذا الموضوع كان من المفروض دراسته من زمان .. قبل الوراثه وقبل القوائم المترابطة
فلا اعرف صراحه كيف تأخذي وظيفة تتعلق في درس وتعملوا الان على دراسة موضوع من المفروض دراسته منذ زمن
المهم ماعلينا :
السؤال الاهم حاليا . مامدى معرفتك بالقوائم المترابطة ؟؟! يعني درستوا عنها شئ ؟!
ارجوا الاجابة بأسرع وقت

بخصوص لغة الجافا انا لم اتعامل معها نهائيا .لكن انا اعرف زميل لي دكتور في لغات البرمجة وهو خبير بلغ الجافا . يمكن اني اعرض عليه الوظيفة .. طبعا بالاول لنخلص من الوظيفة الحالية ..

مرة اخرى اكرر : مابتخافي الوظيفة سهله .

angel83
08-09-2006, 01:50 PM
مرسيووووو...الله ريتو مرسي يا مستر تايم ون...
أما عن الصفوف المركبه بصراحه ؟ مابتذكر مرق هيك أسم علي ...
على كل حال بالملف المرفق ...موجود شو راح ندرس الأسبوع هاد وبالتحديد يوم الثلاثا موعد الدرس ...

وشكرا كتير ...مستر تايم ....

منطلق بطموحي
08-09-2006, 03:17 PM
ماذا نعني بالصفوف المركبة ؟...هل يعرف احدكم اسمها بالانجليزية؟

ليس من الضروري معرفة القوائم المرتبطة لحل السؤال و لكن معرفتها سيسهل الوضع كثيرا فلا بد من تدريسكم اياها
يمكنك قراءة الموقع الذي ذكرته عنها

angel83
12-09-2006, 07:24 PM
هاااااااااي
شوووو شو صار معنا من شان الوظيفي
وما قلتولي الصف يلي عملته صح أم نوووو...

بليز .... أنا يومين ومسافرة ...وبظن ما راح أحسن فوت قبل 1\10
فبليس لو بتساعدوني بلكي أحسن أبعتا قبل ما سافر .....

tknk@@