2017-02-08 8 views
0

私は非常にプログラミングには新しく、数字だけを使って基本的なアメリカのルーレットゲームを作ろうとしています。ボードに表示される数字は "00"です。 "00"を構造体配列内の変数に置き換え、この特定の数値を "0"として読み込む方法はわかりません。ここでは、私はそれを設定するために使用しているコードは、おそらく非常にばかな質問申し訳ありませんが、私は数時間を探していると非常に複雑な答えが私はおそらくまだ理解することができませんでした(私は)。入力は "number number number number number number number number number"となるように私が使用している非常に基本的なコンパイラのために入力を1つ読み込む必要があります。scanf()を使って "00"を読む

#include <stdio.h> 
#include <string.h> 

int main(void) 
{ 
    struct bet /* Setting up a structure array to store input values */ 
    { 
     float number; 
     float betValue; 
    } playerBet[4]; 

    scanf("%f %f %f %f %f %f %f %f", &playerBet[0].number, &playerBet[0].betValue, &playerBet[1].number, &playerBet[1].betValue,&playerBet[2].number, &playerBet[2].betValue,&playerBet[3].number, &playerBet[3].betValue); 
} 

ご協力いただければ幸いです。

+1

をあなたのように入力を取る場合'' 00 ''をチェックし、それを' '37' 'と呼ぶことができます。さもなければ 'sscanf'は数値を抽出する文字列です。しかし、整数値のために 'float'を使うことを勧めます。私はまたお金のために 'float'を使うことに反対します:セントで働く方が良いです。浮動小数点を使用する必要がある場合は、 'double 'を使用できるところで' float'を使用しないでください。 –

+0

私はそれを知らなかった。だから、文字列として読み込まなければなりません。 –

+0

@WeatherVaneありがとう、 "00"と読むことができます。私はsscanfにまだ紹介されていませんが、それを使って数字を比較することはできますか?私はswitch文を使用して、case文がplayerBet [0]から番号を引き出すように勝利の値を持っているかどうかを確認します。番号はsscanfを使用しますか? –

答えて

0

浮動小数点数と整数の場合、000は区別できません。コメントに@Weather Vaneが指摘しているように、sentinel valueを使用して二重ゼロを区別することができます。各データポイントを文字列として入力することもできます("0" and "00"は、文字配列として解釈されるときに区別されます)。

シンプルな(そして宿題の可能性がある)小さなプロジェクトの場合、​​を使用して文字列を数値に変換して入力を解析できます。

データを内部的にモデル化するには、おそらく整数を使用する必要があります。これにより、入力の均一性や奇妙さをチェックする際に問題に遭遇しないようになります。あなたのデータ構造は、浮動小数点データのモデリングを必要としないようです。

あなたの構造要素number整数、およびbetValuefloatください:文字列として

int number; 
float betValue; 

入力数をし、それを解析:

char input_number[3]; // 2 spaces plus null terminator 
int number;   // numeric version (after parsing) 
float bet_value;  // float value for bet 
scanf("%s %f", input_number, &bet_value); 
if (input_number[0] == '0' && input_number[1] == '0') { 
    number = 37; 
} else { 
    number = atoi(input_number); 
} 
// Assign them to structure 
playerBet[0].number = number; 
playerBet[0].betValue = bet_value; 
+0

整数を使用する利点は、ボードのゾーンが簡単に計算可能であることです(適用されない「0」と「00」を除く)。赤/黒、高/低など、「ストリート」や「コーナー」のようなパットを賭けています。 –

+0

私は同意しますが、入力にはユーザーが '' 37 "'を入力する必要がないようにしたいので、おそらく文字配列を入力して解析するでしょう。 –

+0

あなたは '-1'か' 100'のどちらも入力したくないでしょう。もちろん、いくつかのエラーと範囲のチェックが必要です。 –

関連する問題