[解決済み] "ISO C++はポインタと整数の比較を禁止しています "のデバッグ方法
2022-01-30 23:11:49
質問
まだポインターについて勉強していないので、完全に解決する方法がわかりません。私はC++の初心者の学生で、建設的なフィードバックを求めています。
initializersのエラーを解決する方法が全くわかりません。ポインタと整数の比較をどうすればいいのかわかりません。
[-fpermissive];
. 完全に途方に暮れています。戻り値の型をすべて整数に戻せばいいのでしょうか?そして29:46のエラーは、何が足りないのか、どこに";"を入れればいいのか、さっぱりわかりません。
#include <iostream>
using namespace std;
int main() {
// Correct Answers for exam
const int numberOfAnswers = 10;
char correctAnswers[numberOfAnswers] = {"A", "D", "B", "B", "C",
"B", "A", "B", "C", "D"};
// Variables
int answersRight, answersWrong, passingScore, failingScore;
answersRight = 0;
answersWrong = 0;
passingScore = 8;
failingScore = 7;
char userInput;
// loop for exam questions
for (int counter = 1; counter <= 10; ++counter) {
cout << "Enter your answer to question" << counter << "." << endl;
cin >> userInput;
// Comparing correct answers and tracking right/wrong answers.
if (userInput == "A", "B", "C", "D") {
if (userInput == correctAnswers[counter]) {
answersRight++;
}
} else
(userInput != "A", "B", "C", "D") {
cout << "Invalid response. You have one more try to answer question "
<< counter << "." << endl;
cin >> userInput;
}
if (userInput == "A", "B", "C", "D") {
if (userInput = correctAnswers[counter]) {
answersRight++;
}
} else {
answersWrong++;
}
}
// Display results
if (answersRight >= passingScore) {
cout << "Congratulations! You have passed this exam!" << endl;
cout << "You have answered " << answersRight << " questions right and "
<< answersWrong << " questions wrong." << endl;
} else {
cout << "You have failed the exam. Try again to pass!" << endl;
cout << "You have answered " << answersRight << " questions right and "
<< answersWrong << " questions wrong." << endl;
}
return 0;
}
以下は、私が得たエラーです。
main.cpp: In function ‘int main()’:
main.cpp:8:82: error: too many initializers for ‘char [11]’
char correctAnswers[numberOfAnswers]={"A","D","B","B","C","B","A","B","C","D"};
^
main.cpp:24:27: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
if(userInput=="A","B","C","D"){
^~~
main.cpp:29:30: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
}else(userInput!="A","B","C","D"){
^~~
main.cpp:29:46: error: expected ‘;’ before ‘{’ token
}else(userInput!="A","B","C","D"){
^
main.cpp:34:31: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
if(userInput=="A","B","C","D"){
^~~
解決方法は?
1つ目は、エラーでマークされた行のすべてで、次のような問題があります。
"
というのは、実際には
'
. 二重引用符は文字列リテラルを作成しますが、実際に必要なのは文字リテラルです。
第二に、カンマ演算子はあなたが考えているような働きはしません。たとえば、次のようなものが必要だ。
if (userInput == 'A' ||
userInput == 'B' ||
userInput == 'C' ||
userInput == 'D') {
関連
-
[解決済み】coutはstdのメンバではない
-
[解決済み】クラステンプレートの引数リストがない
-
[解決済み】C++エラーです。"配列は中括弧で囲まれたイニシャライザーで初期化する必要がある"
-
[解決済み】Cygwin Make bash コマンドが見つかりません。
-
[解決済み】IntelliSense:オブジェクトに、メンバー関数と互換性のない型修飾子がある
-
[解決済み] 数値定数の前にunqualified-idを付けて、数値を定義することを期待する。
-
[解決済み】VC++の致命的なエラーLNK1168:書き込みのためにfilename.exeを開くことができません。
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み] Javaで配列を宣言し、初期化する方法は?
-
[解決済み] スマートポインターとは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】coutはstdのメンバではない
-
[解決済み】C++ 非推奨の文字列定数から「char*」への変換について
-
[解決済み】C-stringを使用すると警告が表示される。"ローカル変数に関連するスタックメモリのアドレスが返される"
-
[解決済み】致命的なエラー LNK1169: ゲームプログラミングで1つ以上の多重定義されたシンボルが発見された
-
[解決済み] クラスにデフォルトコンストラクタが存在しない。
-
[解決済み】c++でstd::vectorを返すための効率的な方法
-
[解決済み] 式はクラス型を持つ必要があります。
-
[解決済み】リンカーエラーです。"リンカ入力ファイルはリンクが行われていないため未使用"、そのファイル内の関数への未定義参照
-
[解決済み】浮動小数点数の乱数生成
-
[解決済み] スタックアロケーションにより初期化されていない値が作成された