Advertisement
Guest User

Untitled

a guest
Nov 17th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.44 KB | None | 0 0
  1. /**************************/
  2. /* LEN’ BULO */
  3. /* DODELIVAT’ */
  4. /* i YA OStavil’ */
  5. /* TAK */
  6. /* P.S. poslanuye ko mne */
  7. /* v Byduyshem dodelat’ */
  8. /* etot project */
  9. /**************************/
  10.  
  11. #include <iostream>
  12. #include <vector>
  13. #include <string>
  14. #include <math.h>
  15. #include <map>
  16. #include <algorithm>
  17.  
  18. using namespace std;
  19.  
  20. void printVector(const vector<int>& v) {
  21.     std::cout << endl;
  22.     cout << "Вывод вектора : " << endl;
  23.     for (auto i : v) {
  24.         cout << i << ' ';
  25.     }
  26. }
  27.  
  28. void printMap(const map<int, char>& v) {
  29.     cout << endl;
  30.     cout << "Вывод Map : " << endl;
  31.     for (auto item : v) {
  32.         cout << "element: " << item.first << " : " << item.second << endl;
  33.     }
  34. }
  35.  
  36. void lastPrintVector(const vector<int>& v) {
  37.     cout << endl;
  38.     cout << "Вывод последнего вектора : " << endl;
  39.     for (auto i : v) {
  40.         cout << i << ' ';
  41.     }
  42. }
  43.  
  44. int Swap(vector<int>& num, vector<int>& numv2) {
  45.     int temp = 0;
  46.     for (int i = 0; i < numv2.size(); i++) {
  47.         num.push_back(numv2[i]);
  48.     }
  49.     numv2.clear();
  50.     return 0;
  51. }
  52.  
  53. void calc(string a) {
  54.     vector<int> element{ 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000 };
  55.     vector<int> num, numv2, pluse, minus;
  56.     map<int, char>symbole;
  57.     int temp = 0, temp1 = 0, temp2 = 0, set = 0, plus = 0, minusm = 0;
  58.     for (int i = 0; i < a.size(); i++) {
  59.         if (a[i] == '-' && a[i + 1] > 0) {
  60.             for (int d = 0; d < a.size(); d++) {
  61.                 if (a[d+1] != '+' && a[d+1] != '-' && a[d+1] != '*') {
  62.                     if (a[d+1] == '1') {
  63.                         temp = -1;
  64.                         minus.push_back(temp);
  65.                     }
  66.                     if (a[d+1] == '2') {
  67.                         temp = -2;
  68.                         minus.push_back(temp);
  69.                     }
  70.                     if (a[d+1] == '3') {
  71.                         temp = -3;
  72.                         minus.push_back(temp);
  73.                     }
  74.                     if (a[d+1] == '4') {
  75.                         temp = -4;
  76.                         minus.push_back(temp);
  77.                     }
  78.                     if (a[d+1] == '5') {
  79.                         temp = -5;
  80.                         minus.push_back(temp);
  81.  
  82.                     }
  83.                     if (a[d+1] == '6') {
  84.                         temp = -6;
  85.                         minus.push_back(temp);
  86.  
  87.                     }
  88.                     if (a[d+1] == '7') {
  89.                         temp = -7;
  90.                         minus.push_back(temp);
  91.                     }
  92.                     if (a[d+1] == '8') {
  93.                         temp = -8;
  94.                         minus.push_back(temp);
  95.                     }
  96.                     if (a[d+1] == '9') {
  97.                         temp = -9;
  98.                         minus.push_back(temp);
  99.                     }
  100.                 }
  101.                 else {
  102.                     reverse(minus.begin(), minus.end());
  103.                     for (int k = 0; k < minus.size(); k++) {
  104.                         temp = minus[k] * element[k];
  105.                         temp1 += temp;
  106.                         cout << "\nTEMP! MINUS: " << temp1;
  107.                     }
  108.                     num.push_back(temp1);
  109.                     cout << "\nTEMP2 MINUS: " << temp1;
  110.                     temp = temp1 = 0;
  111.                     break;
  112.                 }
  113.             }
  114.         }
  115.             if (a[i] == '1') {
  116.                 temp = 1;
  117.                 num.push_back(temp);
  118.             }
  119.             if (a[i] == '2') {
  120.                 temp = 2;
  121.                 num.push_back(temp);
  122.             }
  123.             if (a[i] == '3') {
  124.                 temp = 3;
  125.                 num.push_back(temp);
  126.             }
  127.             if (a[i] == '4') {
  128.                 temp = 4;
  129.                 num.push_back(temp);
  130.             }
  131.             if (a[i] == '5') {
  132.                 temp = 5;
  133.                 num.push_back(temp);
  134.             }
  135.             if (a[i] == '6') {
  136.                 temp = 6;
  137.                 num.push_back(temp);
  138.             }
  139.             if (a[i] == '7') {
  140.                 temp = 7;
  141.                 num.push_back(temp);
  142.             }
  143.             if (a[i] == '8') {
  144.                 temp = 8;
  145.                 num.push_back(temp);
  146.             }
  147.             if (a[i] == '9') {
  148.                 temp = 9;
  149.                 num.push_back(temp);
  150.             }
  151.             if (a[i] == '0') {
  152.                 temp = 0;
  153.                 num.push_back(temp);
  154.             }
  155.             if (a[i] == '+') {
  156.                 symbole[i] = '+';
  157.                 pluse.push_back(i);
  158.                 reverse(num.begin(), num.end());
  159.                 for (int k = 0; k < num.size(); k++) {
  160.                     temp = num[k] * element[k];
  161.                     temp1 += temp;
  162.                 }
  163.                 numv2.push_back(temp1);
  164.                 temp = temp1 = 0;
  165.                 num.clear();
  166.             }
  167.             if (a[i] == '-') {
  168.                 symbole[i] = '-';
  169.                 for (int minusmin = 0; minusmin < minusm; minusmin++) {
  170.                     symbole.erase(symbole.begin());
  171.                 }
  172.                 reverse(num.begin(), num.end());
  173.                 for (int k = 0; k < num.size(); k++) {
  174.                     temp = num[k] * element[k];
  175.                     temp1 += temp;
  176.                 }
  177.                 numv2.push_back(temp1);
  178.                 temp = temp1 = 0;
  179.                 num.clear();
  180.             }
  181.             if (a[i] == '*') {
  182.                 symbole[i] = '*';
  183.                 reverse(num.begin(), num.end());
  184.                 for (int k = 0; k < num.size(); k++) {
  185.                     temp = num[k] * element[k];
  186.                     temp1 += temp;
  187.                 }
  188.                 numv2.push_back(temp1);
  189.                 temp = temp1 = 0;
  190.                 num.clear();
  191.         }
  192.     }
  193.     reverse(num.begin(), num.end());
  194.     for (int k = 0; k < num.size(); k++){
  195.         temp = num[k] * element[k];
  196.         temp1 += temp;
  197.     }
  198.     numv2.push_back(temp1);
  199.     temp = temp1 = 0;
  200.     num.clear();
  201.     Swap(num, numv2);
  202.     cout << endl;
  203.     int i = 0;
  204.     temp = 0;
  205.     numv2.clear();
  206.     printMap(symbole);
  207.     for (auto item : symbole) {
  208.         if (item.second == '*') {
  209.             vector <int>::iterator it;
  210.             it = (num.begin());
  211.             int temp4 = num.size();
  212.             //if ((temp4 % 2) != 0) { num.push_back(0); minusm++; }//добавляем 1 блок если число не полное
  213.             int sizenumv2 = (num.size() / 2);// узнаем кол. ячеек
  214.             temp1 = num[0];
  215.             temp2 = num[1];
  216.             num.erase(num.begin());
  217.             num.erase(num.begin());
  218.             cout << "\ntemp1 == " << temp1 << " temp2 == " << temp2 << endl;
  219.             temp = temp1 * temp2;
  220.             num.emplace(it, temp);
  221.             lastPrintVector(num);
  222.             if (num.size() == 0) {
  223.                 break;
  224.             }
  225.         }
  226.     }
  227.  
  228.     for (auto item : symbole) {
  229.         if (item.second == '+') {
  230.             vector <int>::iterator it;
  231.             it = (num.begin());
  232.             int temp4 = num.size();
  233.             //if ((temp4 % 2) != 0) { num.push_back(0); minusm++; }//добавляем 1 блок если число не полное
  234.             int sizenumv2 = (num.size() / 2);// узнаем кол. ячеек
  235.             temp1 = num[0];
  236.             temp2 = num[1];
  237.             num.erase(num.begin());
  238.             num.erase(num.begin());
  239.             cout << "\ntemp1 == " << temp1 << " temp2 == " << temp2 << endl;
  240.             temp = temp1 + temp2;
  241.             num.emplace(it, temp);
  242.             lastPrintVector(num);
  243.             if (num.size() == 0) {
  244.                 break;
  245.             }
  246.         }
  247.         if (item.second == '-') {
  248.             vector <int>::iterator it;
  249.             it = (num.begin());
  250.             int temp4 = num.size();
  251.             //if ((temp4 % 2) != 0) { num.push_back(0); minusm++; }//добавляем 1 блок если число не полное
  252.             int sizenumv2 = (num.size() / 2);// узнаем кол. ячеек
  253.             temp1 = num[0];
  254.             temp2 = num[1];
  255.             num.erase(num.begin());
  256.             num.erase(num.begin());
  257.             cout << "\ntemp1 == " << temp1 << " temp2 == " << temp2 << endl;
  258.             temp = temp1 - temp2;
  259.             num.emplace(it, temp);
  260.             lastPrintVector(num);
  261.             if (num.size() == 0) {
  262.                 break;
  263.             }
  264.         }
  265.     }
  266.     cout << endl;
  267.     cout << "Конечный вывод" << " : " << temp << endl;
  268. }
  269.  
  270. int main(){
  271.     setlocale(LC_ALL, "Russian");
  272.     string num;
  273.     cin >> num;
  274.     calc(num);
  275.     return 0;
  276. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement