TransWikia.com

Никак не могу понять, в чём моя ошибка

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");
     }

Получаю ошибку:

Исключение в операции с плавающей точкой (стек памяти сброшен на диск)

One Answer

Давайте посмотрим, что же именно передается в функцию 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

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP