البرمجة

حساب مساحة سطح وحجم أسطوانة باستخدام C++

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

أولًا، في الجزء الخاص بتعريف الكائنات، يمكن أن يكون هناك خلل عند تعريف a1 و a2 باستخدام الكائن Calculate. بدلاً من ذلك، يمكنك إنشاء كائنين من الفئة Calculate بشكل منفصل لحساب المساحة السطحية وحجم الأسطوانة. هكذا:

cpp
Calculate saCalculator, volumeCalculator, inputReader;

ثم يمكنك استخدام كل كائن لاستدعاء الدوال ذات الصلة. الجزء الرئيسي يمكن أن يكون كما يلي:

cpp
int main() { inputReader.getdata(); // استدعاء الدالة للحصول على الإدخال saCalculator = inputReader; // نسخ البيانات إلى كائن حساب المساحة السطحية volumeCalculator = inputReader; // نسخ البيانات إلى كائن حساب الحجم saCalculator.Surfacearea(); // حساب مساحة السطح volumeCalculator.volume(); // حساب حجم الأسطوانة return 0; }

ثانيًا، في دوال حساب المساحة السطحية والحجم، يمكنك استخدام r و h مباشرة دون الحاجة إلى إعادة تعريفها. النص الصحيح لهم يكون كالتالي:

cpp
void 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 كما قمت بشرحه في الرد السابق.

إذا كان لديك أسئلة إضافية أو تحتاج إلى مساعدة في جوانب أخرى من البرنامج، فلا تتردد في طرحها.

زر الذهاب إلى الأعلى