我想将编码后的字符串作为输出。但不能
I want to get the encoded string as output . But not able to
输入:
101101110
1101
预期输出:
000000000011
我的输出:
它只是继续 input.and 不显示任何输出。
请帮帮我。我的代码有什么问题。任何帮助都是 aprreciated.I 给出了变量的名称,这样它很容易 understand.This 代码仅适用于发件人。
#include <iostream>
using namespace std;
int main()
{
string input;
string polynomial;
string encoded="";
cin>>input;
cin>>polynomial;
int input_len=input.length();
int poly_len=polynomial.length();
encoded=encoded+input;
for(int i=1;i<=poly_len-1;i++){
encoded=encoded+'0';
}
for(int i=0;i<=encoded.length()-poly_len;){
for(int j=0;j<poly_len;j++){
if(encoded[i+j]==polynomial[j]){
encoded[i+j]=='0';
}
else{
encoded[i+j]=='1';
}
}
while(i<encoded.length() && encoded[i]!='1'){
i++;
}
}
cout<<encoded;
return 0;
}
我给你的建议是熟悉调试。尝试在你的代码中添加一些断点,这样你就可以真正看到后面发生了什么。检查你的代码后,这行似乎给出了一个无限循环 for(int i=0;i<=encoded.length()-poly_len;)
。输入您给我们的输入后,条件在任何时候都不会为真。
正确查看这些行:
if (encoded[i + j] == polynomial[j]) {
encoded[i + j] == '0'; // Line 1
}
else {
encoded[i + j] == '1'; // Line 2
}
看到了吗?您正在使用 ==
,而您应该使用 =
。 ==
是一个比较运算符,其中 returns 和 boolean
(true/false)。它不分配值。因此,要解决您的问题,请将以上行替换为:
if (encoded[i + j] == polynomial[j]) {
encoded[i + j] = '0'; // Replaced == with =
}
else {
encoded[i + j] = '1'; // Replaced == with =
}
这应该可以解决您的问题。
输入:
101101110
1101
预期输出:
000000000011
我的输出:
它只是继续 input.and 不显示任何输出。
请帮帮我。我的代码有什么问题。任何帮助都是 aprreciated.I 给出了变量的名称,这样它很容易 understand.This 代码仅适用于发件人。
#include <iostream>
using namespace std;
int main()
{
string input;
string polynomial;
string encoded="";
cin>>input;
cin>>polynomial;
int input_len=input.length();
int poly_len=polynomial.length();
encoded=encoded+input;
for(int i=1;i<=poly_len-1;i++){
encoded=encoded+'0';
}
for(int i=0;i<=encoded.length()-poly_len;){
for(int j=0;j<poly_len;j++){
if(encoded[i+j]==polynomial[j]){
encoded[i+j]=='0';
}
else{
encoded[i+j]=='1';
}
}
while(i<encoded.length() && encoded[i]!='1'){
i++;
}
}
cout<<encoded;
return 0;
}
我给你的建议是熟悉调试。尝试在你的代码中添加一些断点,这样你就可以真正看到后面发生了什么。检查你的代码后,这行似乎给出了一个无限循环 for(int i=0;i<=encoded.length()-poly_len;)
。输入您给我们的输入后,条件在任何时候都不会为真。
正确查看这些行:
if (encoded[i + j] == polynomial[j]) {
encoded[i + j] == '0'; // Line 1
}
else {
encoded[i + j] == '1'; // Line 2
}
看到了吗?您正在使用 ==
,而您应该使用 =
。 ==
是一个比较运算符,其中 returns 和 boolean
(true/false)。它不分配值。因此,要解决您的问题,请将以上行替换为:
if (encoded[i + j] == polynomial[j]) {
encoded[i + j] = '0'; // Replaced == with =
}
else {
encoded[i + j] = '1'; // Replaced == with =
}
这应该可以解决您的问题。