مسألة برمجية : نظام جداول البيانات


فى نظام من نظم جداول البيانات مثل اكسل على سبيل المثال يتم استخدام الترقيم التالي فى الأعمدة 
       26  وهكذا حتى العمود  B  والعمود الثانى له الترتيب  A العمود الاول له الترتيب 
  والعمود 28  AA بعد ذلك يتم استخدام خانتين من الحروف فالعمود 27 يعبر عنه ب   Z له الترتيب 
 . . .يستخدم ثلاثة خانات وهكذا ZZ  و بعد  AZ والعمود 52 يعبر عنه ب AA

  الاعمدة يعبر عنها بالارقام الصحية التى تبدء من 1  فيعبر عن موقع الخلية بدمج
الصفوف + الاعمدة 
 : على سبيل المثال 
BC23 
يعبر عن العمود 55 و الصف 23

 فى بعض الاحيان يستخدم طريقة اخري على سبيل المثال 
R23C55 
تعنى الصف 23 و العمود 55 

المطلوب 

تصميم برنامج والذي يقوم بقراءة المدخلات وتحويلها الى نظام اخري

المدخلات

 اول سطر يحتوي عدد المدخلات التى ستيدخلها المستخدم وهو عدد صحيح 
   بعد ذلك يتم ادخال كل سطر يحتوي على نظام


مثال 

الدخل

BC23
R23C55

الخرج

2
R23C55
BC23


البرنامج

حاول حل البرنامج بنفسك اولًا

CPP بلغة

#include <cstdio>
#include <cstring>
#include <cctype>

int main()
{
    int n;
    char ch[20];
    scanf("%d", &n);
    while (n--)
    {
        scanf("%s", ch);
        size_t m = strlen(ch);
        size_t C = 1;
        while (C < m && isdigit(ch[C]))
        {
            ++C;
        }

        if (C > 1 && C < m)
        {
            int col(0);
            for (size_t i = C + 1; i < m; ++i)
            {
                col = col * 10 + (ch[i] - '0');
            }

            int pow(26);
            while (col > pow)
            {
                col -= pow;
                pow *= 26;
            }

            col -= 1;
            while (pow != 1)
            {
                pow /= 26;
                printf("%c", col / pow + 'A');
                col %= pow;
            }

            ch[C] = 0;
            printf("%s\n", ch + 1);
        }
        else
        {
            int col(0), val(0), pow = (1);
            size_t i = 0;
            while (isalpha(ch[i]))
            {
                col += pow;
                pow *= 26;
                val = val * 26 + ch[i] - 'A';
                i += 1;
            }
            col += val;
            printf("R%sC%d\n", ch + i, col);
        }
    }
    return 0;









شارك الموضوع

مواضيع ذات صلة