2017-02-08 12 views
1

私は3日間にわたって高温と低温を入力するようにプログラムを書いています。毎日の高温は低いより高くなければならず、高いはでなければならず、は41より大きく、低くはではなく、は負の-41より小さくなければなりません。警告:ループ中のポインタと整数の比較

最初の日の入力に続いてwhileという文が書き込まれましたが、ポインタと整数のエラー比較が表示されます。

私は設定された整数を使用して私と関係があると考えていたので、プログラムの動作につながりましたが、より高い値を持つ文をwhileという文にするだけでしたが、whileループは完全にスキップされていました。ここに私のコードは、これまでのところです:

編集:私は私のwhileループが間違っていたかを理解し始めています。配列の値を高値と低値に割り当てることを怠ったためだと思っていました。また、ユーザーがwhileループの条件を満たすとコードが再実行されるのを忘れてしまいました。当初、私はそれを書いていたので、高値と低値は値なしで、while状態は無限ループに閉じ込められました。これは条件が満たされた後に実行する何かを与えなかったからです。

#include <stdio.h> 
#define NUMS 3 

int main (void) 

{ 
int high[NUMS]; 
int low[NUMS]; 
int max = 40; 
int min = -40; 

    printf ("---===IPC Temperatur Analyzer ===---\n"); 

    printf ("Enter the high value for day 1: "); 
    scanf ("%d", &high); 

    printf ("Enter the low value for day 1: "); 
    scanf ("%d", &low); 

    while (high[0] > max || low[0] > min || high[0] < low[0]) { 
      printf("Try again\n"); 

      printf ("Enter the high value for day 1: "); 
      scanf ("%d", &high[0]); 

      printf ("Enter the low value for day 1: "); 
      scanf ("%d", &low[0]); 

    } 

    printf ("Enter the high value for day 2: "); 
    scanf ("%d", &high[1]); 

    printf ("Enter the low value for day 2: "); 
    scanf ("%d", &low[1]); 

    printf ("Enter the high value for day 3: "); 
    scanf ("%d", &high[2]); 

    printf ("Enter the low value for day 3: "); 
    scanf ("%d", &low[2]); 

return 0; 

} 
+3

高および低はアレイです。その比較でポインターに崩壊しました – Danh

+0

曜日を格納する変数が必要です。 'scanf("%d "、&high [day_num]);' – kaylum

+1

1日目に 'high [0]'を使用して、 '1日目に' high [例えば、 'scanf("%d "、&high [0]);とwhile(high [0]> max || ...)'のようになります。あなたのコードは、1、2、3日目に同じコードを繰り返すのではなく、ループを使うことで利益を得るでしょう。 –

答えて

1

毎日の高い温度が低いよりも大きくなければならない、 高は41よりも大きくてはならず、ローは 負-41未満であってはなりません。私も理解して、あなたのコードと書かれたコメントを変更した

:あなたは、コードの他の部分からの参照を取ることによって完了することができ

#include <stdio.h> 
#define NUMS 3 

int main (void) 

{ 
int high[NUMS]; 
int low[NUMS]; 
const int MAX = 41; 
const int MIN = -41; 

    printf ("---===IPC Temperatur Analyzer ===---\n"); 

    printf ("Enter the high value for day 1: "); 
    scanf ("%d", &high[0]);  //address of first element 

    printf ("Enter the low value for day 1: "); 
    scanf ("%d", &low[0]);  //address of first element 

    /*Check for User Input Value*/ 
    while (high[0] > MAX || low[0] < MIN || high[0] < low[0]) { 

      printf("Try again\n"); 

      printf ("Enter the high value for day 1: "); 
      scanf ("%d", &high[0]); 

      printf ("Enter the low value for day 1: "); 
      scanf ("%d", &low[0]); 


    } 

    printf ("Enter the high value for day 2: "); 
    scanf ("%d", &high[1]); 

    printf ("Enter the low value for day 2: "); 
    scanf ("%d", &low[1]); 

    //TODO-:/*Check for User Input Value*/ 

    printf ("Enter the high value for day 3: "); 
    scanf ("%d", &high[2]); 

    printf ("Enter the low value for day 3: "); 
    scanf ("%d", &low[2]); 
    //TODO-:/*Check for User Input Value*/ 

    //TODO-:/*Print the all value*/ 

return 0; 

} 

藤堂一部。

+0

申し訳ありませんが、私は高さが41を超えてはならないことを意味し、低さは-41未満であってはなりません。しかし、私の唯一の問題は、負の値のレジスタを持つことです。 -41のconst intは負の整数として登録されず、低い値は-15のような負の入力を登録していないようです。 – Jinto

+0

さて、私のミスは何か分かりました。私はMINが-41なのでMINが低い[0]と考えられていたと思ったが、それは逆にプログラムが登録しているようだ。助けてくれてありがとうMohan。 – Jinto

関連する問題