私は解決策を設計したhttp://www.spoj.com/problems/SHLIGHTS/を実行しようとしています。私は C++ (約 14 日) に非常に慣れていないため、多くの問題に直面しています。以前はPythonを使用していましたが、これらのエラーは何もありませんでしたが、とにかく、これを書きました..
#include <iostream>
#include <string>
#include <cstdio>
using namespace std;
//example is GBGBBB
//t=0, GBGBBB then t=1,BGBGBB then t=2 BBGBGB, then t=3 BBBGBG
//search for GB and replace it with BG
//we need a function that replaces things
string swapSEQ(string SEQ)
{
unsigned int sizeSEQ=SEQ.size();
unsigned int curr(0);
while (curr<sizeSEQ-1)
{
if (SEQ[curr]=="G" and SEQ[curr+1]=="B")
{
SEQ[curr]="B";SEQ[curr+1]="G";curr+=2;
}
else {++curr;}
}
return SEQ;
}
int main()
{
unsigned int numCases;
scanf("%d",&numCases);
// cin>>numCases;
for (unsigned int currentCase=0;currentCase<numCases;++currentCase)
{
string SEQ;
//scanf("%s",&SEQ);
cin>>SEQ;
string swapped=swapSEQ(SEQ);
unsigned long long t=0;
while (swapped!=SEQ)
{
swapped=swapSEQ(SEQ);++t;
}
printf("%lld\n",t);
}
return 0;
}
細かいことはわかっていますが、それだけです。SPOJ では、入力と出力の後に空白行が表示されますが、説明を読んだ後、1 行で処理する必要があることがわかりました。これが私のg ++ 4.7コンパイラ(LINUX)で得られるものです
SHLIGHTS.cpp: In function ‘std::string swapSEQ(std::string)’:
SHLIGHTS.cpp:17:18: error: comparison with string literal results in unspecified behaviour [-Werror=address]
SHLIGHTS.cpp:17:18: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
SHLIGHTS.cpp:17:37: error: comparison with string literal results in unspecified behaviour [-Werror=address]
SHLIGHTS.cpp:17:37: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
SHLIGHTS.cpp:17:52: error: invalid conversion from ‘const char*’ to ‘char’ [-fpermissive]
SHLIGHTS.cpp:17:66: error: invalid conversion from ‘const char*’ to ‘char’ [-fpermissive]
cc1plus: all warnings being treated as errors
*何が起こっているのですか?ポインター、const char、および未指定の動作について何かがあります。
**ポインターは、メモリの場所を指す一種の変数であり、それ以上のものではないことは知っています。
**いくつかの場所でscanfを使用し、他の場所でcinを使用しました(scanfをcinに置き換えると、同じエラーが発生します)
**引数として受け取った文字列を返したという事実について何かありますか?
**どこでポインターを使用しましたか?
**これは間違っていますか? C++ の文字列は char 配列ですか? いいえの場合、無効な変換はどこにありますか?
事前に感謝し、何か間違ったことをお詫びします. 長すぎる場合は、疑問に答えてください。