My pull request - #9
Conversation
|
Здравствуйте, это Александр Спиридонов магистрант |
ilya-kadochnikov
left a comment
There was a problem hiding this comment.
У вас немножко плывёт стиль кода: разные отступы между операторами и скобками (где-то есть пробел, где-то нет), разные отступы для обозначения вложенности в блок (где-то 2 пробела, где-то четыре)
| vector<string> result; | ||
| string str = data; | ||
| size_t pos = 0; | ||
| while (pos=str.find(" ") != string::npos) |
There was a problem hiding this comment.
Вокруг pos=str.find(" ") нужны скобки, так как у оператора присваивания приотитет ниже, чем у оператора сравнения !=
| { | ||
| if(str == " " || str == ""){ | ||
| break; | ||
| } |
There was a problem hiding this comment.
Дополнительное условие выхода из цикла
if(str == " " || str == ""){
break;
}
на мой взгляд, не нужно. Если строка пустая, то и так произойдёт выход из цикла, а если заканчивается пробелами, то пробелы по одному будут выбрасываться в строчке 20.
| result.push_back(str.substr(0, pos)); | ||
| str.erase(0, pos + 1); | ||
| } | ||
| else if((pos = str.find("\t")) < str.find("(")){ |
There was a problem hiding this comment.
У вас сработает разбиение строки по символу табуляции '\t' только если после табуляции в строке имеется пробел. Для иллюстрации проблемы вот два теста:
CHECK(SplitString("a\ta ") == std::vector<std::string>{"a", "a"}); // ok
CHECK(SplitString("a\ta") == std::vector<std::string>{"a", "a"}); // fail
Попробуйте исправить эту проблему
| } | ||
| if(str != " " && str != ""){ | ||
| result.push_back(str.substr(0, pos)); | ||
| } |
There was a problem hiding this comment.
Если убрать условие выхода из цикла в строчках 16-18, то последний if можно упростить до
if (!str.empty()) {
result.push_back(str);
}
|
Код первой домашней работы был запутан и я переписал его с нуля. Во второй домашней работе дополнительно реализовал: выполнение сложных выражений состоящих из нескольких операторов; операторы - "(" и ")"; выполнение возведения в степень; возможность считать отрицательные числа и числа с плавающей точкой. |
LostPointer
left a comment
There was a problem hiding this comment.
в принцепе лайк, во второй задаче прямо хорошо код получился
| std::vector<string> SplitString(const std::string& data) { | ||
| vector<string> result; | ||
| std::string word; | ||
| int flag = 0; |
There was a problem hiding this comment.
тут лучше подойдет тип bool
|
|
||
| void Search(std::string str,std::stack<char>& operation, std::stack<double>& values) { | ||
| std::string word; | ||
| int flag = 1; |
| #include <stack> | ||
| #include <cmath> | ||
| double Calculate(const std::string& data); | ||
| void Search(std::string str,std::stack<char>& operation, std::stack<double>& values); |
There was a problem hiding this comment.
я бы убрал эти объявления функции, и возможно бы в cpp для того что бы показать что они внутренние поместил бы их в неименованный немспейс
|
|
||
| std::vector<std::string> SplitString(const std::string& data) { | ||
| return {}; | ||
| using namespace std; |
There was a problem hiding this comment.
считается плохим тоном использовать using namespace std; да и других пространств имен, в исключении случая когда они используются внутри функции
No description provided.