Почему при четкой команде ==, дейстие не выполняется, скажите что не так?

#include <iostream>
#include <string>
#include <map>
#include <iterator>
using namespace std;

static std::string revRot(const std::string &strng, unsigned int sz)
{
    int counter=((strng.length())/sz); 
    int m_int;
    string source{strng};
    string temp{};
    string result{};
    int intResult{};
        int m_sz=(int)sz;
        if(m_sz==0)
        {
        cout<<"ops";
        return "hello";
        }

    for(int i{};i<counter;++i)
    {
      intResult=0;
      temp=source.substr(0,sz);
      source.erase(0,sz);
      for(int x{};x<temp.length();++x)
      {
        int zzz=(int)temp[x];
        zzz=zzz*zzz*zzz;
        intResult+=zzz;
      }
    if(intResult%2!=0)
    {
      char m_tempS=temp[0];
      for(int i{};i<temp.length()-1;++i)
      temp[i]=temp[i+1];
      temp[temp.length()-1]=m_tempS;
    }
    else
    {
      for(int i{};i<temp.length()/2;++i)
      {
       char m_tempS=temp[i]; 
       temp[i]=temp[(temp.length()-1)-i];
       temp[(temp.length()-1)-i]=m_tempS;
      }
    }  
    result+=temp; 
    } 
    return result;
    }
int main()
{
string xx{"563000655734469485"};
string temp=revRot(xx,0);
cout<<temp;
}

// у меня в задаче иногда второй параметр может быть равен нулю, так что нужно вернуть "" //чтобы заработала функция положите любое другое число во второй параметр. Функция работает правильно, но нужно чтобы при нуле второго параметра или при значении второго параметра больше чем длина строки первого параметра, должна выходить с ""; Но даже ставя просто cout при

if (sz==0) {
   cout << "действие"; 
   return " ";
} 

просто закрывается.


Ответы (1 шт):

Автор решения: Igor

А вот эта строчка

int counter=((strng.length())/sz);

что делает при sz равном нулю?

→ Ссылка