このコードは、次のように、単語の先頭にある文字列のすべての単語の最後の "reverse_display"シンボルを使用します。 cin >> ああ、ジングル鐘、ジングルの鐘、ジングルのすべての方法。ああ、一匹の馬に乗るのは楽しいですね。 cout < < hO、glejin llsbe、glejin llsbe、glejin。趣味、楽しさ、楽しさ、楽しさ。コード全体の実行後にプログラムが動作しない
すべてがうまくいきます。実行終了後、私が見ることができる特別な理由がなくても、プログラムは動作を停止します。私は、プログラムの終わりにテストして試しに試してみたところ、実行され、プログラムは再び動作を停止しました。私はここで0番の賃貸人コードなしで試してみましたが、無駄でした。これは私の存在のベインです、助けてください。
#include <iostream>
#include <string>
using namespace std;
int check_if_reverse_display_overload (int, int);
int main()
{
string dumi="";
string duma="";
getline (cin,dumi);
dumi.append(" ");
int reverse_display, reverse_display_overload, i=0, k=0;
cin>>reverse_display;
for (int i=0; i< dumi.length(); i++)
{
if ((dumi[i]>='A' && dumi[i]<='Z') || (dumi[i]>='a' && dumi[i]<='z') || dumi[i]=='-' || (dumi[i]>='0' && dumi[i]<='9'))
{
duma[k]=dumi[i];
k++;
}
else
{
if (((dumi[i-1]>='A' && dumi[i-1]<='Z') || (dumi[i-1]>='a' && dumi[i-1]<='z') || dumi[i-1]=='-' || (dumi[i-1]>='0' && dumi[i-1]<='9')) && i!=1)
{
reverse_display_overload=check_if_reverse_display_overload(reverse_display, k);
for (int j=k-reverse_display_overload; j<k; j++)
{
cout<<duma[j];
}
for (int j=0; j<k-reverse_display_overload; j++)
{
cout<<duma[j];
}
duma="";
k=0;
}
cout<<dumi[i];
}
}
// cout<<"bogomil rainov e pi4";
return 0;
}
int check_if_reverse_display_overload (int reverse_display, int k)
{
if (k==0)
{
return reverse_display;
}
if(reverse_display>k)
{
return check_if_reverse_display_overload(reverse_display-k, k);
}
else
{
return reverse_display;
}
}
空の文字列(duma)にはアクセスできません。あなたは未定義の動作を呼び出しています。 –
'std :: tolower'や' std :: toupper'を使って比較の半分を削除することができます。 –