Advertisement
Guest User

Untitled

a guest
Mar 30th, 2020
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.33 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <iomanip>
  4.  
  5. using namespace std;
  6.  
  7. short int_len(int number)
  8. {
  9.     short len = 0;
  10.     do
  11.     {
  12.         number = number / 10;
  13.         len++;
  14.     }
  15.     while(number != 0);
  16.  
  17.     return len;
  18. }
  19.  
  20. short double_len(double number)
  21. {
  22.     short len = 0;
  23.     int int_part = int(number);
  24.     double float_part = number - int_part;
  25.  
  26.     do
  27.     {
  28.         int_part = int_part / 10;
  29.         len++;
  30.     }
  31.     while(int_part != 0);
  32.  
  33.     if(float_part == 0)
  34.     {
  35.         return len;
  36.     }
  37.  
  38.     while(float_part >= 0.0000001)
  39.     {
  40.         float_part = float_part * 10;
  41.         float_part = float_part - int(float_part);
  42.         len++;
  43.     }
  44.  
  45.     return len + 1; // dot character
  46. }
  47.  
  48. struct worker
  49. {
  50.     public:
  51.         void input_worker();
  52.         int number;
  53.         string name;
  54.         string position;
  55.         int year;
  56.         double salary;
  57. };
  58.  
  59. void worker::input_worker()
  60. {
  61.     cout<<"Input number:"<<endl; cin>>number;
  62.     cout<<"Input name:"<<endl; getline(cin, name);
  63.     cout<<"Input position:"<<endl; getline(cin, position);
  64.     cout<<"Input year:"<<endl; cin>>year;
  65.     cout<<"Input salary:"<<endl; cin>>salary;
  66. }
  67.  
  68. void input_array(worker * array, int size)
  69. {
  70.     for(int i = 0;i < size;i++)
  71.     {
  72.         array[i].input_worker();
  73.     }
  74. }
  75.  
  76. void workers_table(worker * array, int size)
  77. {
  78.     const int year_len = 4;
  79.  
  80.     string field[5] = {"Number", "Name", "Position", "Year", "Salary"};
  81.  
  82.     short field_len = 0;
  83.  
  84.     for(int i = 0;i < 5;i++)
  85.     {
  86.         field_len += field[i].length();
  87.     }
  88.  
  89.     short max_number_len = field[0].length();
  90.     short max_name_len = field[1].length();
  91.     short max_pos_len = field[2].length();
  92.     short max_salary_len = field[4].length();
  93.  
  94.     short curr_number_len;
  95.     short curr_name_len;
  96.     short curr_pos_len;
  97.     short curr_salary_len;
  98.     for(int i = 1;i < size;i++)
  99.     {
  100.         curr_number_len = int_len(array[i].number);
  101.         if(curr_number_len > max_number_len)
  102.         {
  103.             max_number_len = curr_number_len;
  104.         }
  105.         curr_name_len = array[i].name.length();
  106.         if(curr_name_len > max_name_len)
  107.         {
  108.             max_name_len = curr_name_len;
  109.         }
  110.         curr_pos_len = array[i].position.length();
  111.         if(curr_pos_len > max_pos_len)
  112.         {
  113.             max_pos_len = curr_pos_len;
  114.         }
  115.         curr_salary_len = double_len(array[i].number);
  116.         if(curr_salary_len > max_salary_len)
  117.         {
  118.             max_salary_len = curr_salary_len;
  119.         }
  120.     }
  121.  
  122.     short table_length =
  123.         max_salary_len +
  124.         max_pos_len +
  125.         max_name_len +
  126.         max_number_len +
  127.         year_len +
  128.         6;
  129.  
  130.     if(field_len > table_length)
  131.     {
  132.         table_length = field_len;
  133.     }
  134.  
  135.     for(int i = 0; i < table_length; i++) cout<<'-';
  136.  
  137.     cout<<endl;
  138.  
  139.     cout<<'|'<<setw(max_number_len)<<field[0];
  140.     cout<<'|'<<setw(max_name_len)<<field[1];
  141.     cout<<'|'<<setw(max_pos_len)<<field[2];
  142.     cout<<'|'<<setw(year_len)<<field[3];
  143.     cout<<'|'<<setw(max_salary_len)<<field[4]<<'|'<<endl;
  144.  
  145.     for(int i = 0; i < table_length; i++) cout<<'-';
  146.  
  147.     cout<<endl;
  148.  
  149.     cout.fill(' ');
  150.     for(int i = 0;i < size;i++)
  151.     {
  152.         cout<<'|'<<setw(max_number_len)<<array[i].number;
  153.         cout<<'|'<<setw(max_name_len)<<array[i].name;
  154.         cout<<'|'<<setw(max_pos_len)<<array[i].position;
  155.         cout<<'|'<<setw(year_len)<<array[i].year;
  156.         cout<<'|'<<setw(max_salary_len)<<array[i].salary<<'|'<<endl;
  157.         for(int i = 0; i < table_length; i++) cout<<'-';
  158.         cout<<endl;
  159.     }
  160.  
  161.  
  162.     cout<<endl;
  163. }
  164.  
  165. int main()
  166. {
  167.     int size;
  168.     cout<<"Input workers quantity: "; cin>>size;
  169.     worker * group = new worker[size];
  170.     input_array(group, size);
  171.     workers_table(group, size);
  172.     delete group;
  173.     return 0;
  174. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement