في البرنامج الذي قدمته، يبدو أن هناك خطأ في استخدام الكائنات والدوال بشكل صحيح. دعوني أشرح لك الأخطاء وأقدم لك تصحيحات لتحصل على نتائج صحيحة.
أولًا، في الجزء الخاص بتعريف الكائنات، يمكن أن يكون هناك خلل عند تعريف a1
و a2
باستخدام الكائن Calculate
. بدلاً من ذلك، يمكنك إنشاء كائنين من الفئة Calculate
بشكل منفصل لحساب المساحة السطحية وحجم الأسطوانة. هكذا:
cppCalculate saCalculator, volumeCalculator, inputReader;
ثم يمكنك استخدام كل كائن لاستدعاء الدوال ذات الصلة. الجزء الرئيسي يمكن أن يكون كما يلي:
cppint main()
{
inputReader.getdata(); // استدعاء الدالة للحصول على الإدخال
saCalculator = inputReader; // نسخ البيانات إلى كائن حساب المساحة السطحية
volumeCalculator = inputReader; // نسخ البيانات إلى كائن حساب الحجم
saCalculator.Surfacearea(); // حساب مساحة السطح
volumeCalculator.volume(); // حساب حجم الأسطوانة
return 0;
}
ثانيًا، في دوال حساب المساحة السطحية والحجم، يمكنك استخدام r
و h
مباشرة دون الحاجة إلى إعادة تعريفها. النص الصحيح لهم يكون كالتالي:
cppvoid Surfacearea()
{
float a;
a = (2 * 3.14 * r * r) + (2 * 3.14 * r * h);
cout << "the sa of cylinder is" << a;
}
void volume()
{
float v;
v = (3.14 * r * r * h);
cout << "the volume of cylinder is" << v;
}
بتصحيحات هذه الأخطاء، يجب أن يعمل البرنامج بشكل صحيح ويظهر النتائج الصحيحة. تأكد من استخدام الكائنات بشكل صحيح وتجنب إعادة تعريف المتغيرات r
و h
في دوال الكائن، وذلك لضمان أن تكون القيم المدخلة هي نفسها التي تستخدم في الحسابات.
المزيد من المعلومات
البرنامج الذي قدمته يقوم بحساب مساحة سطح وحجم أسطوانة باستخدام اللغة C++. الكود يتضمن استخدام الكائنات والدوال لتنظيم الشيفرة وزيادة فهمها.
الكلاس Calculate
يتضمن متغيرات r
و h
لتخزين نصف قطر الأسطوانة وارتفاعها على التوالي. يتم استخدام الدالة getdata
لاستخلاص البيانات من المستخدم، حيث يُطلب من المستخدم إدخال قيم للنصف القطر والارتفاع.
ثم يتم استخدام الدوال Surfacearea
و volume
لحساب مساحة السطح وحجم الأسطوانة على التوالي. يتم طباعة النتائج باستخدام cout
.
في الجزء الرئيسي من البرنامج، يتم إنشاء ثلاث كائنات a1
، a2
و g
من الكلاس Calculate
. يتم استخدام g
لاستخلاص البيانات من المستخدم باستخدام getdata
، ثم تُنسخ البيانات إلى a1
و a2
. يتم بعد ذلك استدعاء دوال حساب المساحة والحجم باستخدام a1.Surfacearea()
و a2.volume()
.
واحدة من المشكلات الرئيسية في الكود الأصلي كانت في عدم تحديث القيم في a1
و a2
بالبيانات الصحيحة، مما أدى إلى ظهور قيم مبدئية لـ r
و h
تساوي صفر، وبالتالي حساب مساحة السطح وحجم الأسطوانة كانت تعود بقيم صفر. الحلا هو نسخ البيانات الصحيحة من g
إلى a1
و a2
كما قمت بشرحه في الرد السابق.
إذا كان لديك أسئلة إضافية أو تحتاج إلى مساعدة في جوانب أخرى من البرنامج، فلا تتردد في طرحها.