C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: 入力範囲を指定する


(過去ログ 44 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■23368 / inTopicNo.1)  入力範囲を指定する
  
□投稿者/ あおぞら (1回)-(2008/08/13(Wed) 11:35:30)

分類:[C/C++] 

お世話になります。
VC++2005で入力をさせてその答えを表示させるプログラムを作っています
(教則に載ってるような入力範囲外だとそれを表示して終わるのではなく、絶対に入力させるしくみ)。
作ったサンプルは1〜3までの数字を入力させます。
#include "stdafx.h"
#include <iostream>
using namespace std;

int inputnum(void);

int _tmain(int argc, _TCHAR* argv[])
{	int a;
		do{
			a=0;
			a=inputnum();
		}while(a==0);
		cout << a;
	return 0;
}

int inputnum()
{
	int ax;
	cout << "入力\n";
	cin >> ax;
	
if (ax!=1 && ax!=2 && ax!=3)
	{
		cout << "不正\n";
		ax=0;
	}
return ax;
}
数字を入れる分には1〜3ならちゃんと表示し、それ以外なら不正と表示して再度入力になります。
が、文字を入れると暴走します。
文字を入れても不正と表示して、再度入力させたいのですが、どうしたらいいでしょうか?

引用返信 編集キー/
■23372 / inTopicNo.2)  Re[1]: 入力範囲を指定する
□投稿者/ επιστημη (1234回)-(2008/08/13(Wed) 11:49:57)
επιστημη さんの Web サイト
> 数字を入れる分には1〜3ならちゃんと表示し、それ以外なら不正と表示して再度入力になります。
> が、文字を入れると暴走します。

cin から int に >> している限りダメっしょーね。

> 文字を入れても不正と表示して、再度入力させたいのですが、どうしたらいいでしょうか?

一旦文字列(string)に >> し、そいつを数値に変換します。
変換に失敗したら不正扱いってことで。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -