#include <stdio.h>
#include <stdlib.h>
struct time{int hours, mins, secs;};
int main(int argc, char *argv[])
{
printf("\nplease enter the time in 24 hr format, \nenter the hours, return,\nenter minutes, return, enter seconds, and return.\n");
struct time one;
scanf("%d\n%d\n%d", &one.hours, &one.mins, &one.secs);
printf("retfal1");
int yn;
yn = validateTime(one, yn);
while(!yn){
printf("\nerror, please enter the time in 24 hr format, \nenter the hours, return,\nenter minutes, return, enter seconds, and return.\n");
scanf("%d\n%d\n%d", &one.hours, &one.mins, &one.secs);
validateTime(one);
if (!yn){
puts("Invalid input\nPlease try again");
printf("\nplease enter the time in 24 hr format, \nenter the hours, return,\nenter minutes, return, enter seconds, and return.\n");
scanf("%d\n%d\n%d", &one.hours, &one.mins, &one.secs);
validateTime(one);
}
else{
printf ("Time entered was; %d:%d:%d", one.hours, one.mins, one.secs);
}
}
printf ("the time entered ws; %d:%d:%d", one.hours, one.mins, one.secs);
getch();
return 0;
}
int validateTime(struct time tme, int yn)
{
if (tme.hours < 0 || tme.hours > 23 || tme.mins > 59 || tme.mins < 0 || tme.secs < 0 || tme.secs > 59)
{
printf("retfal4");
yn = 0;
return yn;
}
else {
printf("rettru");
yn = 1;
return yn;
}
}
このプログラムは、最初の試行で無効な入力が得られた場合、時間、分、秒を取り込み、検証して印刷します再び摂取を促し、時間を確認してください。検証は問題を引き起こしていますが、最初のエントリで正しく検証されますが、間違った時間を入力すると無効な出力と次の入力を促しますが、正しい/有効な入力でも別の無効な入力プロンプトが表示されます。私はこれをあまりにも長い間見てきましたが、私は何らかの段階で何か愚かなことをしたことが分かりましたが、それを見つけることはできません。どんな助けも非常に高く評価されるでしょう。検証機能の第2サイクルは正しく検証されません