Skip to content

My pull request - #9

Open
Spiraks wants to merge 5 commits into
DafeMipt212:mainfrom
Spiraks:main
Open

My pull request#9
Spiraks wants to merge 5 commits into
DafeMipt212:mainfrom
Spiraks:main

Conversation

@Spiraks

@Spiraks Spiraks commented Nov 23, 2022

Copy link
Copy Markdown

No description provided.

@Spiraks

Spiraks commented Nov 25, 2022

Copy link
Copy Markdown
Author

Здравствуйте, это Александр Спиридонов магистрант

Comment thread homework_01/task_01/src/utils.cpp Outdated
Comment thread homework_01/task_01/src/utils.cpp Outdated
Comment thread homework_01/task_02/src/utils.cpp Outdated
Comment thread homework_01/task_02/src/utils.cpp Outdated

@ilya-kadochnikov ilya-kadochnikov left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

У вас немножко плывёт стиль кода: разные отступы между операторами и скобками (где-то есть пробел, где-то нет), разные отступы для обозначения вложенности в блок (где-то 2 пробела, где-то четыре)

Comment thread homework_01/task_01/src/utils.cpp Outdated
vector<string> result;
string str = data;
size_t pos = 0;
while (pos=str.find(" ") != string::npos)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Вокруг pos=str.find(" ") нужны скобки, так как у оператора присваивания приотитет ниже, чем у оператора сравнения !=

Comment thread homework_01/task_01/src/utils.cpp Outdated
{
if(str == " " || str == ""){
break;
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Дополнительное условие выхода из цикла

if(str == " " || str == ""){
  break;
}

на мой взгляд, не нужно. Если строка пустая, то и так произойдёт выход из цикла, а если заканчивается пробелами, то пробелы по одному будут выбрасываться в строчке 20.

Comment thread homework_01/task_01/src/utils.cpp Outdated
result.push_back(str.substr(0, pos));
str.erase(0, pos + 1);
}
else if((pos = str.find("\t")) < str.find("(")){

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

У вас сработает разбиение строки по символу табуляции '\t' только если после табуляции в строке имеется пробел. Для иллюстрации проблемы вот два теста:

CHECK(SplitString("a\ta ") == std::vector<std::string>{"a", "a"}); // ok
CHECK(SplitString("a\ta") == std::vector<std::string>{"a", "a"});  // fail

Попробуйте исправить эту проблему

Comment thread homework_01/task_01/src/utils.cpp Outdated
}
if(str != " " && str != ""){
result.push_back(str.substr(0, pos));
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Если убрать условие выхода из цикла в строчках 16-18, то последний if можно упростить до

if (!str.empty()) {
  result.push_back(str); 
}

@Spiraks

Spiraks commented Dec 12, 2022

Copy link
Copy Markdown
Author

Код первой домашней работы был запутан и я переписал его с нуля. Во второй домашней работе дополнительно реализовал: выполнение сложных выражений состоящих из нескольких операторов; операторы - "(" и ")"; выполнение возведения в степень; возможность считать отрицательные числа и числа с плавающей точкой.

@LostPointer LostPointer left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

в принцепе лайк, во второй задаче прямо хорошо код получился

std::vector<string> SplitString(const std::string& data) {
vector<string> result;
std::string word;
int flag = 0;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

тут лучше подойдет тип bool


void Search(std::string str,std::stack<char>& operation, std::stack<double>& values) {
std::string word;
int flag = 1;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

и тут тоже bool

#include <stack>
#include <cmath>
double Calculate(const std::string& data);
void Search(std::string str,std::stack<char>& operation, std::stack<double>& values);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

я бы убрал эти объявления функции, и возможно бы в cpp для того что бы показать что они внутренние поместил бы их в неименованный немспейс


std::vector<std::string> SplitString(const std::string& data) {
return {};
using namespace std;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

считается плохим тоном использовать using namespace std; да и других пространств имен, в исключении случая когда они используются внутри функции

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants