2017-02-02 13 views
0

シナリオ1:C++(Console)の検証

入力は文字配列[20]として取り込まれ、* .datファイルに保存されます。

配列のサイズを検証する必要があります。数字と文字の大文字と小文字の区別があるかどうかを確認してください。

文字列ではないので、長さを検証するためにstrlenを使用することはできません。そうでない場合は.length or size_t/sizeof方法

シナリオ2を使用することが可能である:構造体の整数である年齢、Id及び電話番号を検証する必要がある(また* .datファイルに保存された)

を。例:

struct patient{ 

    int pId, age ,contactNo; 
} 

void input(){ 

patient obj; 
if ((int)obj.age<=65){ 
//Some Code 
    } 
} 

上記の方法は機能しませんでした。

上記のように年齢制限を設定して年齢を確認する必要があります。 pIdは4桁を超えてはならず、電話番号は10桁になり、間に " - "が表示され、数値入力のみが許可されます。

上記のシナリオを実行する方法はありますか。それが可能私の例をお願いしたら...

+0

1):

あなたはこのようなタイプpatientのオブジェクトを構築することができますか?私たちに見せてください2)1.あなたの年齢を検証するソリューションが正しいと思われますが、問題は何ですか? * out * " - " int "を持つ* 10桁は" - "を持つことはできず、' int'のオーバーフローが存在する可能性があります。だから問題は何ですか?データの読み込みや解析、コードの検証、コード内での特定の問題の解決方法はわかりません。 –

+0

@YuriyIvaskevychこんにちは!御時間ありがとうございます。その下に答えたような年齢問題にはその問題があります。電話番号の形式は、0112729729のようなものではなく、1-908-528-5656にする必要があります。電話番号はそれに合わせて検証する必要があります。 –

答えて

0

は、それはあなたがシナリオ1で

シナリオを求めるものを私に(少なくとも)は不明である2:

  • セミコロンの後を必要としますそれはすでにpIdに関してint
  • あるよう(int)obj.age<=65は、obj.age<=65する必要があり、それならばちょうど10000 0の下で確認してください:あなたは型キャストを削除しなければならない、あなたの構造体定義
  • contactNoの場合はuint64_tが必要です。それ以外の場合は10桁の任意の数字を保持できません。

は、また、あなたのagepId変数unsigned intの代わりintを作成することをお勧め、あなたがマイナスとマイナスagepIdの可能性を削除するこの方法かもしれません。あなたが何かを試してみました

patient obj{1234, 47, 1234567}; 
+0

ありがとう! "contactNoにはuint64_tが必要です。そうでなければ10桁の数字を保持できません。"私はそれを理解していない.... –

+0

'int'の最大値は2147483647です。' unsigned int'の値は4294967295です。つまり、 'int'を使うと、一番左の数字は' unsigned int'の場合は2になります。 10桁あります。 – Jonas

+0

タイプが10^10(10桁)の可能な値を持つには少なくとも34ビット( 'ceil(log(pow(10,10))')が必要です。つまり、32ビットの 'int'はそれを保持できません。 – Jonas