下のようなプログラムを作ってみたのですが、思うように動作してくれません。
本当は曜日と時間を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件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
あ, 間違えてた.
演算子 < は左結合なので
(0<person_ptr->time)<12
は
(0<person_ptr->time)<12
と解釈しますね>#1.
は
演算子 < は左結合なので
0<person_ptr->time<12
は
(0<person_ptr->time)<12
と解釈しますね>#1.
の間違いです. コピペに失敗した.
No.2
- 回答日時:
演算子 < は左結合なので
(0<person_ptr->time)<12
は
(0<person_ptr->time)<12
と解釈しますね>#1.
演算子 < の結果は 0 か 1 なので, 結局のところ
0<person_ptr->time<12
は必ず 1 ですが.
No.1
- 回答日時:
>その後の曜日と午前か午後を判別するところが、全て最初に入力した曜日と必ず午前と出てしまいます。
「最後に」入力したもので判定したものを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と比較して……というモノになるのか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# C言語(構造体) 3 2022/07/05 20:08
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# 3×3のラテン方陣をつくるプログラムを作成したのですが、(↓) #include <stdio.h> 5 2023/07/10 01:53
- Visual Basic(VBA) VBAでのMATCH関数 3 2022/10/17 19:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
月の第一週とは
-
よくある 『 第○(1・2・3・4・...
-
エクセルで毎月第2週日の水曜日...
-
燃えるゴミの日は何曜日ですか?
-
VBA。複数のChangeイベントをま...
-
Excelで第一〇曜日を求める方法...
-
指定曜日にMsgBox表示は可能で...
-
ユーザー定義の(aaa)
-
週休3日制で土日の他にもう一日...
-
6月の第2 第4火曜日は何日...
-
「曜日」の名前、変えるとしたら?
-
曜日ごとの集計をしたい
-
Excel関数で当月の第一日曜日の...
-
.htaccessにて、設定した曜日・...
-
曜日派?日付派??
-
土曜日の26時って何曜日の何時...
-
ジンクスやデジャブは昔起きた...
-
[Excel] ある日の曜日が当月の"...
-
日本語問題 昨日は何曜日ですか...
-
エクセル関数質問 セルA2にもし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
よくある 『 第○(1・2・3・4・...
-
月の第一週とは
-
エクセルで毎月第2週日の水曜日...
-
週2回のペースって だいたい何...
-
毎○曜日って、使いますか?
-
[Excel] ある日の曜日が当月の"...
-
週休3日制で土日の他にもう一日...
-
VBA。複数のChangeイベントをま...
-
毎週同じ曜日にラブホに行くと...
-
Excelで第一〇曜日を求める方法...
-
ユーザー定義の(aaa)
-
6月の第2 第4火曜日は何日...
-
今週とは何曜日から何曜日まで...
-
日本語問題 昨日は何曜日ですか...
-
曜日と曜の使い分けがわかりま...
-
土曜日の26時って何曜日の何時...
-
曜日のなぞ
-
時計の曜日がいつのまにか違う
-
エクセル、条件付書式について...
-
指定曜日にMsgBox表示は可能で...
おすすめ情報