Автор Тема: Qt 4.7.4 C++ Class за Бройни Системи dec, bin, hex  (Прочетена 1272 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

haccac

  • Jr. Member
  • **
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 80
systems.h
Код: C++ (QT)
  1. #ifndef SYSTEMS_H
  2. #define SYSTEMS_H
  3. #include <QString>
  4. #include <QByteArray>
  5.  
  6. class Systems
  7. {
  8. public:
  9.     Systems();
  10.  
  11.     int err[5];
  12.  
  13.     QString rez10_to_2;
  14.     int rez2_to_10;
  15.     QByteArray rez10_to_16;
  16.     int rez16_to_10;
  17.  
  18.     void set_num_10_to_2(int number);
  19.     void set_num_2_to_10(QString number);
  20.     void set_num_10_to_16(int number);
  21.     void set_num_16_to_10(QByteArray number);
  22. private:
  23.     int num10_to_2;
  24.     QString num2_to_10;
  25.     int num10_to_16;
  26.     QByteArray num16_to_10;
  27.  
  28.     void from_10_to_16();
  29.     void from_16_to_10();
  30.     void from_10_to_2();
  31.     void from_2_to_10();
  32. };
  33.  
  34. #endif // SYSTEMS_H
  35.  
  36. //------------------------------------------------------------------------------------


systems.cpp
Код: C++ (QT)
  1. #include "systems.h"
  2. #include <QChar>
  3. #include <QString>
  4. #include <QByteArray>
  5.  
  6. Systems::Systems()
  7. {
  8. }
  9. void Systems::from_10_to_2()
  10. {
  11.     int num = num10_to_2;
  12.     QString n512 = "0";
  13.     QString n256 = "0";
  14.     QString n128 = "0";
  15.     QString n64 = "0";
  16.     QString n32 = "0";
  17.     QString n16 = "0";
  18.     QString n8 = "0";
  19.     QString n4 = "0";
  20.     QString n2 = "0";
  21.     QString n1 = "0";
  22.  
  23.     if(num < 1024 && num >= 512)
  24.     {
  25.         num = num - 512;
  26.         n512 = "1";
  27.     }
  28.     if(num < 512 && num >= 256)
  29.     {
  30.         num = num - 256;
  31.         n256 = "1";
  32.     }
  33.     if(num < 256 && num >= 128)
  34.     {
  35.         num = num - 128;
  36.         n128 = "1";
  37.     }
  38.     if(num < 128 && num >= 64)
  39.     {
  40.         num = num - 64;
  41.         n64 = "1";
  42.     }
  43.     if(num < 64 && num >= 32)
  44.     {
  45.         num = num - 32;
  46.         n32 = "1";
  47.     }
  48.     if(num < 32 && num >= 16)
  49.     {
  50.         num = num - 16;
  51.         n16 = "1";
  52.     }
  53.     if(num < 16 && num >= 8 )
  54.     {
  55.         num = num - 8;
  56.         n8 = "1";
  57.     }
  58.     if(num < 8 && num >= 4)
  59.     {
  60.         num = num - 4;
  61.         n4 = "1";
  62.     }
  63.     if(num < 4 && num >= 2)
  64.     {
  65.         num = num - 2;
  66.         n2 = "1";
  67.     }
  68.     if(num < 2 && num == 1)
  69.     {
  70.         num = num - 1;
  71.         n1 = "1";
  72.     } // Това може да се съкрати, но по-късно разбрах как ства, който се сеща нека си го оправи. 8)
  73.     rez10_to_2 = n512 + n256 + n128 + n64 + n32 + n16 + n8 + n4 + n2 + n1;
  74. }
  75.  
  76. void Systems::set_num_10_to_2(int number)
  77. {
  78.     if(number < 1024 && number >= 0)
  79.     {
  80.         num10_to_2 = number;
  81.         from_10_to_2();
  82.     }
  83.     else
  84.     {
  85.         err[1] = 1;
  86.     }
  87. }
  88.  
  89. void Systems::from_2_to_10()
  90. {
  91.     int rez = 0;
  92.     int arr_i = 1;
  93.     int arr[num2_to_10.size() - 1];
  94.     QChar ch[num2_to_10.size() - 1];
  95.     for(int i = 0; i<num2_to_10.size(); i++)
  96.     {
  97.         ch[i] = num2_to_10.at((num2_to_10.size() - 1)- i);
  98.         arr[i] = arr_i;
  99.         if(ch[i] == '1')
  100.         {
  101.         rez += arr[i];
  102.         }
  103.         else if(ch[i] == '0')
  104.         {
  105.         rez += 0;
  106.         }
  107.         else
  108.         {
  109.         err[2] = 1;
  110.         break;
  111.         }
  112.         arr_i += arr_i;
  113.     }
  114.     rez2_to_10 = rez;
  115. }
  116.  
  117. void Systems::set_num_2_to_10(QString number)
  118. {
  119.     QChar ch[number.size() - 1];
  120.     for(int i = 0; i<number.size(); i++)
  121.     {
  122.         ch[i] = number.at((number.size() - 1)- i);
  123.         if(ch[i] != '1' || ch[i] != '0')
  124.         {
  125.             err[2] = 1;
  126.             break;
  127.         }
  128.     }
  129.     num2_to_10 = number;
  130.     from_2_to_10();
  131. }
  132.  
  133. void Systems::from_10_to_16()
  134. {
  135.     rez10_to_16.setNum(num10_to_16, 16);
  136. }
  137.  
  138. void Systems::set_num_10_to_16(int number)
  139. {
  140.     if(number)
  141.     {
  142.         num10_to_16 = number;
  143.         from_10_to_16();
  144.     }
  145.     else
  146.     {
  147.         err[3] = 1;
  148.     }
  149. }
  150.  
  151. void Systems::from_16_to_10()
  152. {
  153.     bool ok;
  154.     rez16_to_10 = num16_to_10.toInt(&ok,16);
  155. }
  156.  
  157. void Systems::set_num_16_to_10(QByteArray number)
  158. {
  159.     if(!number.isEmpty())
  160.     {
  161.         num16_to_10 = number;
  162.         from_16_to_10();
  163.     }
  164.     else
  165.     {
  166.         err[4] = 1;
  167.     }
  168. }
  169.  
  170. //---------------------------------------------------------------------------------------

main.cpp
Код: C++ (QT)
  1. #include <QtCore/QCoreApplication>
  2. #include "systems.h"
  3. #include <QDebug>
  4. int main(int argc, char *argv[])
  5. {
  6.     QCoreApplication a(argc, argv);
  7. Systems s;
  8. s.set_num_10_to_2(10);
  9. qDebug() << s.rez10_to_2;
  10. s.set_num_2_to_10(s.rez10_to_2);
  11. qDebug() << s.rez2_to_10;
  12. s.set_num_16_to_10("1f");
  13. qDebug() << s.rez16_to_10;
  14. s.set_num_10_to_16(31);
  15. qDebug() << s.rez10_to_16;
  16.  
  17.     return a.exec();
  18. }
« Последна редакция: 12 Май 2015, 22:00:50 от Avalanche »