Stack Overflow на русском Asked by Aro Hovhannisyan on December 30, 2021
В чём моя ошибка? Тут все хорошо:
std::string rotation(std::string common,int n)
{
std::string addition=common.substr(common.size()-n%common.size(), common.size());
common.erase(common.size()-n%common.size(), common.size());
common=addition+common;
return common;
}
std::string encode(int n, std::string str)
{
std::string str_c=str;
for(int i=0;i<n;i++)
{
str_c.clear();
//str_c=rotation(str_c,8); //Here is all ok
str_c.clear();
}
return str_c;
}
int main() {
encode(8,"Hello World");
}
А здесь не очень:
std::string rotation(std::string common,int n)
{
std::string addition=common.substr(common.size()-n%common.size(), common.size());
common.erase(common.size()-n%common.size(), common.size());
common=addition+common;
return common;
}
std::string encode(int n, std::string str)
{
std::string str_c=str;
for(int i=0;i<n;i++)
{
str_c="some string"
str_c=rotation(str_c,8); //reason of error
str_c="some string";
}
return str_c;
}
int main() {
encode(8,"Hello World");
}
Получаю ошибку:
Исключение в операции с плавающей точкой (стек памяти сброшен на диск)
Давайте посмотрим, что же именно передается в функцию rotation. А там пустая строка и число 8.
Теперь открываем первую строку функции rotation и немного ее переформатируем и покоментим
std::string addition
=common.substr(
common.size()-n%common.size(), // а это 0-8%0. делим на ноль???
common.size()); // это ноль
это паттерн повторяется и в следующей строке.
Answered by KoVadim on December 30, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP