2016-10-15 4 views
0

プログラムの主な目的は、配列の中の "channels"という値を表示することですが、何も得られないようですショー。表示が表示された後、私は4つのチャンネルの1つを選択し、選択された "チャンネル"の値を表示するようにユーザーに促す必要があります。これは私がこれまで持っていたものです。私もループを使用することはできません。助けてください。配列の内容を表示して、選択を促すメッセージを表示する方法{C}

私は配列

typedef struct 

{ 
    char* name; 
    double n; //roughness 
    double slope; 
    double width; 
    double depth; 

} CHANNEL; 


main() 
{ 

    CHANNEL channels [4] = { 
    {"Channel1", 0.035, 0.0001, 10.0, 2.0}, 
    {"Channel2", 0.020, 0.0002, 8.0, 1.0}, 
    {"Channel3", 0.015, 0.0010, 20.0, 1.5}, 
    {"Channel4", 0.030, 0.0007, 24.0, 3.0} 
    }; 

//以内に私は私を知っている...右ここにすべてのチャンネルとその値を表示したいすべての値を格納するための構造を使用してい

#include <stdio.h> 

// printfを使用する必要がありますが、私はポインタを使用する必要がありますか?

printf("Please note:\n 0 = Channel 1 \n 1 = Channel 2 \n 2 = Channel 3 \n 3 = Channel 4); 

は//この部分は、単に選択したチャンネルのためである

printf(Pick a channel from 0-3\n"); 
    int c = 0; 
    scanf("%i", &c); 
    CHANNEL chosen = channels [c]; 

} 
+1

何も印刷していないか、ユーザーの入力を求めていません。また、このコードはコンパイルされません。実際に何をやってみましたか? – UnholySheep

+0

ループを使用できないのはなぜですか?それはそうする自然な方法のようです。 – usr2564301

+0

あなたの構造体の 'name'メンバーは単一の' char'です。 –

答えて

0

まず、Daniel Litvakが示唆している変更を行います。これは、アレイ内のチャンネルのインデックスを示す指標をユーザに促します

int main(void) { 

    // ... 
    printf("Pick a channel from 0-3\n"); 
    int c = 0; 
    scanf("%i ", &c); 

    CHANNEL chosen = channels[c]; 

    printf ("The channel chosen is %s, n = %f, slope = %f and the depth = %f", chosen.name, chosen.n, chosen.slope, chosen.depth); 
} 

:次に、ユーザーからの情報を取得するには、次のような何かを行う必要があります。必要に応じて、すべてのチャンネルの選択肢を最初に印刷することもできます。

説明のために、変数chosenに選択したチャンネルを残しておき、必要に応じて続行することができます。

EDITcが範囲内にあることを確認するエラーチェックは行われません。これは、余分な、紛らわしいコードの表示を避けるためです。

+0

選択したチャンネルの値をどのように出力するのですか: – aaa

+0

printf(「選択したチャンネルは%s、n =%d、傾き=%d、深度=%d」です。 – aaa

+0

@AjAlmero:私は自分の答えを更新しました。また、 'double 'の出力は'%f'で行われます。 – Charles

0
問題は、あなたが文字の代わりに文字列を持っていることかもしれない

は、簡単な解決策は、に構造体を変更することであろう:

typedef struct{ 
char* name; 
double n; 
double slope; 
double depth; 
} CHANNEL; 
関連する問題