شارك المقالة

لتحويل درجة الحرارة بين Celsius وFahrenheit في C++ نختار وحدة المصدر ثم نطبق المعادلة المناسبة. Celsius هي الدرجة المئوية نفسها؛ ليست مقياسًا ثالثًا مختلفًا. يدعم المثال قيمًا عشرية وسالبة، ويتحقق من نجاح قراءة المدخلات وصلاحية الوحدة.

الكود الكامل باستخدام C++17

#include <cmath>
#include <iomanip>
#include <iostream>
#include <stdexcept>

double convertTemperature(double value, char unit) {
    if (!std::isfinite(value)) throw std::invalid_argument("Use a finite value.");
    double result{};
    if (unit == 'C' || unit == 'c') result = value * 9.0 / 5.0 + 32;
    else if (unit == 'F' || unit == 'f') result = (value - 32) * 5.0 / 9.0;
    else throw std::invalid_argument("Choose C or F for the source unit.");
    if (!std::isfinite(result)) throw std::overflow_error("Result is too large.");
    return result;
}

int main() {
    double value{};
    char unit{};
    std::cout << "Value and source unit (C/F): ";
    if (!(std::cin >> value >> unit)) {
        std::cout << "Invalid input.\n";
        return 1;
    }
    try {
        std::cout << std::fixed << std::setprecision(2)
                  << convertTemperature(value, unit)
                  << ((unit == 'C' || unit == 'c') ? " F\n" : " C\n");
    } catch (const std::exception& error) {
        std::cout << error.what() << '\n';
        return 1;
    }
}

معادلتان واضحتان

للتحويل من المئوية نستخدم F = C × 9 / 5 + 32، ومن فهرنهايت نستخدم C = (F – 32) × 5 / 9. كتبنا 9.0 و5.0 لتكون العمليات عشرية، لا قسمة أعداد صحيحة. أدخل 0 C فتحصل على 32.00 F، أو 212 F فتحصل على 100.00 C.

فحص الحالات الحدية

القيمة -40 تتساوى في المقياسين. يقبل البرنامج C أو c وF أو f، ويرفض رمزًا آخر. فحص isfinite يمنع تمرير اللانهاية أو NaN في الدالة الحسابية، ونتحقق من أن الناتج لم يتجاوز المجال المدعوم. عدد المنازل في العرض لا يغير القيمة المخزنة قبل التنسيق.

فصل الحساب عن الإدخال

تستقبل convertTemperature القيمة والوحدة وتعيد الناتج، بينما تتولى main القراءة وعرض رسالة الخطأ. يساعد ذلك على اختبار الصيغ دون التفاعل مع الطرفية. إذا أضفت مقياس Kelvin لاحقًا فعرّف اتجاه التحويل والتحقق الخاص به صراحة.

ترجمة المثال وتشغيله

احفظ المثال في ملف main.cpp واختر معيار C++17 في محررك. مع GCC أو Clang يمكنك الترجمة بالأمر g++ -std=c++17 -Wall -Wextra -pedantic main.cpp -o main ثم تشغيل الملف الناتج. ترجم كل مثال كبرنامج مستقل؛ لا تجمع دوال main من دروس مختلفة في ملف واحد.

مصادر المثال السابق: codevscolor

شاهد أيضًا
مقالات ذات صلة
🚫 مانع الإعلانات مفعل

يجب إيقاف مانع الإعلانات لاستكمال تصفح الموقع