当输入大于10时,代码不会显示正确的输出.但不到10英镑,它运行得很完美


#include <iostream>
#include <string>
using namespace std ;
int main ( )
{
int i , j , n , m ;
string str , str1  ;

getline (cin , str ) ;
n = str.length( ) ;

for (i=0 ; i<n ; i++ )
{
if (str[i] >=65 && str[i] <=90) {
str[i] = str[i] + 32 ;
}
}

for (i=0 , j = 0; i<n   ; i++) {
if (str[i] == 'a' || str[i] == 'e' || str[i] == 'i' || str[i] == 'o' || str[i]== 'u')
{
continue ;
}
else {
str1[j] = '.' ;
str1[j+1] = str[i] ;
j= j+ 2 ;
m = j ;
}
}

for (i=0 ; i < m ; i++) {
cout << str1[i] ;
}
return 0 ;
}

当输入大于11个字符时,为什么我发现垃圾值?如果小于11,它的表现就很完美。我基本上想从输入中删除所有元音,并在每个辅音之前加上句点。

Codeforces ~为此,它运行得很好,就像下面的.c.d.f.r.c.s 一样

但对于这个~ktajqhpqsvhw,它显示了~退出代码是2147483647

您在此处创建一个空字符串(str1(

string str , str1  ;

然后尝试写入中的位置

str1[j] = '.' ;

你不能这样做,我想你希望str1和str 大小相同

string str1 = string(" ",str.length());

这将创建一个与str.大小相同的空间字符串

或者你可以做

str1.push_back('.')

这将增加字符串的大小,并在末尾添加该字符

相关内容

最新更新