アプリ版:「スタンプのみでお礼する」機能のリリースについて

下のようなプログラムを作ってみたのですが、思うように動作してくれません。
本当は曜日と時間を7回入力した後に、入力した時間に応じて○曜日は午前か午後を判別するプログラムを作ったつもりなのですが、曜日と時間を入力するところまでは上手く行くのですが、その後の曜日と午前か午後を判別するところが、全て最初に入力した曜日と必ず午前と出てしまいます。
コンパイルしてもエラーは出ないので、どこを直せばちゃんと思った通りに動作してくれるのでしょうか
わかる方いましたら教えて頂けたらと思います。
※ソースコードは下に書いてあります
※写真はコンパイルした後の実行結果です。

#include<stdio.h>
#define NUM 7

typedef struct person{
char day[10];
int time;
int stime;
int min;
int smin;
}person;

int main(){
person person_array[NUM];
person *person_ptr;
int i,j;
for(j=0;j<NUM;j++){
person_ptr = &person_array[j];
printf("曜日と時間1,時間2,分1,分2を入力\n");
scanf("%s",person_ptr->day);
scanf("%d",&person_ptr->time);
scanf("%d",&person_ptr->stime);
scanf("%d",&person_ptr->min);
scanf("%d",&person_ptr->smin);
printf("曜日は%s曜日,時間は%d時%d分から%d時%d分まで\n",person_ptr->day,person_ptr->time,person_ptr->min,person_ptr->stime,person_ptr->smin);
}
for(i=0;i<NUM;i++){
if(0<person_ptr->time<12){
printf("%s曜日は午前です\n",person_ptr->day);
} else {
if(11<person_ptr->time<24){
printf("%s曜日は午後です\n",person_ptr->day);
}
return 0;
}
}
}

「下のようなプログラムを作ってみたのですが」の質問画像

A 回答 (3件)

あ, 間違えてた.



演算子 < は左結合なので
(0<person_ptr->time)<12

(0<person_ptr->time)<12
と解釈しますね>#1.



演算子 < は左結合なので
0<person_ptr->time<12

(0<person_ptr->time)<12
と解釈しますね>#1.

の間違いです. コピペに失敗した.
    • good
    • 0

演算子 < は左結合なので


(0<person_ptr->time)<12

(0<person_ptr->time)<12
と解釈しますね>#1.

演算子 < の結果は 0 か 1 なので, 結局のところ
0<person_ptr->time<12
は必ず 1 ですが.
    • good
    • 0

>その後の曜日と午前か午後を判別するところが、全て最初に入力した曜日と必ず午前と出てしまいます。



「最後に」入力したもので判定したものを7 回表示。
のはずですが?


>for(j=0;j<NUM;j++){
> person_ptr = &person_array[j];
> printf("曜日と時間1,時間2,分1,分2を入力\n");
  :
>}
で、person_ptrはperson_array[0]からperson_array[6]まで順番に設定されます。
このforループを終了した時点で
「person_ptrはperson_array[6]」を指しています。

>for(i=0;i<NUM;i++){
> if(0<person_ptr->time<12){
>  printf("%s曜日は午前です\n",person_ptr->day);
> } else {
>  if(11<person_ptr->time<24){
>   printf("%s曜日は午後です\n",person_ptr->day);
>  }
>  return 0;
> }
>}
のループ中に「person_ptrはperson_array[6]」を指したまま変化しません。
# ループの中にreturnがあるのはコピペミスですかね。
# ってかif文内の条件式ヘンですけど。
## 0<person_ptr->time<12だと…まず、0<person_ptr->timeが判定されて、入力した時間が0時でなければ真(1)に
## 次に評価式の結果を12と比較して……というモノになるのか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!