前提・実現したいこと
C++で0~100のランダムに指定された数字を当てるシステムを作っています。
数字以外の文字を入力した際にエラー表示が出る機能を実装中に以下のエラーが発生しました。
発生している問題
どの数値を入れてもErrorの文字が必ず表示されてしまう
該当のソースコード
#include<iostream>
#include<cstdlib>
#include<time.h>
#include<stdlib.h>
#include <cctype>
#include <algorithm>
#include<string>
using namespace std;
void Random(int& ans) {
srand(time(NULL));//シード値の設定と現在時刻をもとに乱数
ans = rand() % 101;
}
int main() {
int ans = -1;
int num;
string N;
int count = 1;
Random(ans);
while (1){
cout << "0~100の数値を入力" << endl;
cin >> num;
N = to_string(num);
if (isdigit(num) == 0) {//数字以外が入力された時にエラー表示をしたい
cout << "Error" << endl;
}
if (num > 100 || num < 0) {//0未満もしくは100より大きい場合 cout << "範囲外です" << endl; count++; } else if (num>ans) {//指定された数値より大きい場合 cout << "もっと小さいです" << endl; count++; } else if (num < ans) {//指定された数値より小さい場合 cout << "もっと大きいです" << endl; count++; } else if (num == ans) {//正解の場合 cout << count << "回目で正解!" << std::endl; cout << "スコア:" <<1000- count * 50 << "点" << endl; break; } }
}
試したこと
-該当部分のifの中身をnone_of(N.cbegin(), N.cend(), isdigit)にする
-該当部分のifを正解時の処理の後ろに移動させる
いずれの方法でも
もっと大きいです
0~100の数値を入力
の文が延々と表示されてしまう
補足情報(FW/ツールのバージョンなど)
Blend for Visual Studioを使用
回答1件
あなたの回答
tips
プレビュー