Advertisement
bruimafia

Untitled

May 29th, 2021
831
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.90 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4. using namespace std;
  5.  
  6. // так и не понял, что делает эта функция :(
  7. //float Sum(int i, string Input, float sum)
  8. //{
  9. //    float A[] = { 0, 1, 2, 3, 4 };
  10. //    for (int c = i; c < Input.length(); c++)
  11. //    {
  12. //        if (Input[i] == ' ') continue;
  13. //        if (Input[i] == '$')
  14. //        {
  15. //            char c = Input[i + 1];
  16. //            sum += c - '0';
  17. //        }
  18. //        if (Input[i] == '0' || Input[i] == '1' || Input[i] == '2' || Input[i] == '3' || Input[i] == '4' || Input[i] == '-5' || Input[i] == '6' || Input[i] == '7' || Input[i] == '8' || Input[i] == '9')
  19. //        {
  20. //            char c = Input[i];
  21. //            sum += c - '0';
  22. //        }
  23. //        if (Input[i] == 'Sum(')
  24. //        {
  25. //            i = c;
  26. //            return Sum(i, Input, sum);
  27. //        }
  28. //    }
  29. //    return sum;
  30. //}
  31.  
  32.  
  33. // данные условия работают только с положительными цифрами (не с числами и не с отрицательными значениями!)
  34. // для отрицательных нужно подрихтовать условие "поиск обычного числа (не индекса), без доллара"
  35. void fun(string input_text) {
  36.     bool is_answer = true; // флаг, который служит для разделения поиска доллара до знака равно (будущего ответа) после знака равно
  37.     int sum = 0; // сумма
  38.     int index_answer; // индекс будущего ответа
  39.     int array[] = { 0, 1, 2, 3, 4 }; // изначальный массив
  40.     int length_array = 5; // длина массива
  41.     int length_input_text = input_text.length(); // длина введенного в консоль текста
  42.    
  43.     cout << "Изначальный массив: ";
  44.     for (int j = 0; j < length_array; j++)
  45.         cout << array[j] << " ";
  46.     cout << endl;
  47.    
  48.     for (int i = 0; i < length_input_text; i++) {
  49.         // если находим пробел, то пропускаем и идем дальше
  50.         if (input_text[i] == ' ')
  51.             continue;
  52.        
  53.         // поиск индекса будущего ответа
  54.         if (input_text[i] == '$' && is_answer) {
  55.             index_answer = input_text[i + 1] - '0'; // у тебя index_answer это char, зачем его было приводить к int?
  56.             cout << "Найден индекс будущего ответа в массиве -> $" << index_answer << endl;
  57.         }
  58.        
  59.         // поиск обычных индексов. Это проверка нужна не здесь скорее всего, а в функции, описанной на строке №73
  60.         if (input_text[i] == '$' && !is_answer) {
  61.             cout << "Найден обычный индекс числа в массиве -> $" << input_text[i + 1]  - '0' << endl;
  62.         }
  63.        
  64.         // поиск равно
  65.         if (input_text[i] == '=') {
  66.             is_answer = false; // если равно найдето, то значит найден и индекс будущего ответа, значит меняем флаг
  67.         }
  68.        
  69.         // поиск обычного числа (не индекса), без доллара. Это проверка нужна не здесь скорее всего, а в функции, описанной на строке №73
  70.         if ( (input_text[i] == '0' || input_text[i] == '1' || input_text[i] == '2' || input_text[i] == '3' || input_text[i] == '4' || input_text[i] == '5' || input_text[i] == '6' || input_text[i] == '7' || input_text[i] == '8' || input_text[i] == '9') && input_text[i - 1] != '$') {
  71.             cout << "Найдено просто число, оно равно -> " << input_text[i] << endl;
  72.         }
  73.        
  74.         // нельзя так записывать 'Sum(': в одинарный кавычках пушется тип char - char это ОДИН символ, у тебя 4 символа - значит это уже string - пишется в двойных кавычках
  75.         // поиск функции Sum, выводится индекс буквы s во введенном тексте
  76.         if (input_text[i] == 'S' && input_text[i + 1] == 'u' && input_text[i + 2] == 'm' && input_text[i + 3] == '(')
  77.             cout << "Найдена запись Sum( на индексе -> " << i << endl; {
  78.             // здесь нужно вызывать функцию, которая будет проверять, что находится внутри функции до символа закрывающей скобки
  79.             // в функцию передавать либо индекс буквы s, либо сразу индекс после открывающей скобки
  80.             // внутри будет происходить отчасти то же самое: "проверка на поиск обычных индексов", "поиск обычного числа (не индекса), без доллара" и "поиск функции Sum, выводится индекс буквы s во введенном тексте"
  81.             // производить необходимые действия при нахождении - суммирование и т.д.
  82.             // если опять нашли Sum(, то рекурсивно эта функция может вызывать саму себя
  83.         }
  84.     }
  85.    
  86.    
  87.     cout << "Конечный массив: ";
  88.     for (int j = 0; j < length_array; j++)
  89.         cout << array[j] << " ";
  90.     cout << endl;
  91. }
  92.  
  93. int main() {
  94.     string input_text;
  95.    
  96.     getline(cin, input_text);
  97.     fun(input_text);
  98.     // $3 = Sum( Sum( $2, Sum($4,1)), Sum(5, $0))
  99. }
  100.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement