با استفاده از تابع زیر قادر خواهیم بود کاراکتر های حرفی را با ترفند استفاده از ترتیب کد های اسکی اعداد 0 تا 9 به عدد تبدیل کنیم.

1) تبدیل حرف به عدد

int charToInt (char _char)
{
    for (int i = 48, num = 0; i < 58; i++, num++)

    // کد های اسکی اعداد 0 تا 9 از 48 تا 57 می باشد
    if ((int)_char == i)

        return num;
}

 2) تبدیل رشته به عدد

در این تابع به تابع بالا نیاز خواهیم داشت.

int strToInt (string _str, int _beginning, int _end)

// رشته, موقعیت ابتدای محدوده، موقعیت انتهای محدوده

// اگر قصد دارید تمامی رشته به عدد تبدیل شود کافیست نقطه آغاز را صفر و پایان را طول رشته قرار دهید
{
    int temp, num = 0;
    for (int i = _beginning; i <= _end; i++)
        {
            temp = charToInt(_str[i]);

            // تبدیل موقتی حرف

            // یعنی اگر یک رشته "56789" باشد و خروجی موقعیت سوم یعنی عدد 7 می شود 7
            for (int x = 0; x < _end - i; x++)

            // در این قسمت حرف به تناسب جایگاه خود به دفعات در 10 ضرب می شود

            // عامل تعیین کننده دفعات تکرار ضرب در عدد 10 موقعیت عدد است

            // مثلا در رشته "123" 1 که صد گان است و دو صفر دارد دوبار و 2 که دهگان است و یک صفر دارد دوبار و 3 به دلیل یکان بودن 0 بار در ده ضرب می شود
            {
                temp *= 10;
            }
            num += temp;

            // در نهایت حاصل هر حرف به مجوع اعداد اضافه می شود
        }
    return num;
}

 


منبع: cppdev.blog.ir

این مطلب توسط GreatMAK  نوشته شده است و منبع آن وبلاگ cppdev.blog.ir می باشد.