Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <string>
- using namespace std;
- // так и не понял, что делает эта функция :(
- //float Sum(int i, string Input, float sum)
- //{
- // float A[] = { 0, 1, 2, 3, 4 };
- // for (int c = i; c < Input.length(); c++)
- // {
- // if (Input[i] == ' ') continue;
- // if (Input[i] == '$')
- // {
- // char c = Input[i + 1];
- // sum += c - '0';
- // }
- // 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')
- // {
- // char c = Input[i];
- // sum += c - '0';
- // }
- // if (Input[i] == 'Sum(')
- // {
- // i = c;
- // return Sum(i, Input, sum);
- // }
- // }
- // return sum;
- //}
- // данные условия работают только с положительными цифрами (не с числами и не с отрицательными значениями!)
- // для отрицательных нужно подрихтовать условие "поиск обычного числа (не индекса), без доллара"
- void fun(string input_text) {
- bool is_answer = true; // флаг, который служит для разделения поиска доллара до знака равно (будущего ответа) после знака равно
- int sum = 0; // сумма
- int index_answer; // индекс будущего ответа
- int array[] = { 0, 1, 2, 3, 4 }; // изначальный массив
- int length_array = 5; // длина массива
- int length_input_text = input_text.length(); // длина введенного в консоль текста
- cout << "Изначальный массив: ";
- for (int j = 0; j < length_array; j++)
- cout << array[j] << " ";
- cout << endl;
- for (int i = 0; i < length_input_text; i++) {
- // если находим пробел, то пропускаем и идем дальше
- if (input_text[i] == ' ')
- continue;
- // поиск индекса будущего ответа
- if (input_text[i] == '$' && is_answer) {
- index_answer = input_text[i + 1] - '0'; // у тебя index_answer это char, зачем его было приводить к int?
- cout << "Найден индекс будущего ответа в массиве -> $" << index_answer << endl;
- }
- // поиск обычных индексов. Это проверка нужна не здесь скорее всего, а в функции, описанной на строке №73
- if (input_text[i] == '$' && !is_answer) {
- cout << "Найден обычный индекс числа в массиве -> $" << input_text[i + 1] - '0' << endl;
- }
- // поиск равно
- if (input_text[i] == '=') {
- is_answer = false; // если равно найдето, то значит найден и индекс будущего ответа, значит меняем флаг
- }
- // поиск обычного числа (не индекса), без доллара. Это проверка нужна не здесь скорее всего, а в функции, описанной на строке №73
- 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] != '$') {
- cout << "Найдено просто число, оно равно -> " << input_text[i] << endl;
- }
- // нельзя так записывать 'Sum(': в одинарный кавычках пушется тип char - char это ОДИН символ, у тебя 4 символа - значит это уже string - пишется в двойных кавычках
- // поиск функции Sum, выводится индекс буквы s во введенном тексте
- if (input_text[i] == 'S' && input_text[i + 1] == 'u' && input_text[i + 2] == 'm' && input_text[i + 3] == '(')
- cout << "Найдена запись Sum( на индексе -> " << i << endl; {
- // здесь нужно вызывать функцию, которая будет проверять, что находится внутри функции до символа закрывающей скобки
- // в функцию передавать либо индекс буквы s, либо сразу индекс после открывающей скобки
- // внутри будет происходить отчасти то же самое: "проверка на поиск обычных индексов", "поиск обычного числа (не индекса), без доллара" и "поиск функции Sum, выводится индекс буквы s во введенном тексте"
- // производить необходимые действия при нахождении - суммирование и т.д.
- // если опять нашли Sum(, то рекурсивно эта функция может вызывать саму себя
- }
- }
- cout << "Конечный массив: ";
- for (int j = 0; j < length_array; j++)
- cout << array[j] << " ";
- cout << endl;
- }
- int main() {
- string input_text;
- getline(cin, input_text);
- fun(input_text);
- // $3 = Sum( Sum( $2, Sum($4,1)), Sum(5, $0))
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement