2016-09-25 93 views
0

我需要一個函數來讀取計劃(使用enum heatingScheduleEnum {off, on };中的值)並顯示計劃在開啓和關閉之間切換的時間。我已經寫了一個函數來做到這一點,但它沒有像預期的那樣工作 - 只在第一次打開數值然後再打開時才工作。在此之後,它輸出時間表在每次實際標記爲開啓時都被關閉。C切換邏輯功能不按預期方式工作

我一直主要使用Java和C++,但這是在C.該邏輯看起來非常好,我看不出爲什麼它不工作。

interpretTime函數需要幾分鐘時間(0-1439是一整天)並將其轉換爲人類可讀的字符串。

我唯一能想到的就是數組的大小。但講師自己提供了樣本數組,他們確實得到了測試項目。

謝謝!

下面是函數:

char time[5]; 
int i, on, wasOn = 0; 

for(i = 0; i < 1440; i++) { 
    on = schedule[i]; 
    if (on != wasOn) { 
     makeTimeStr(i, time); 
     if(on) { 
      printf("Heating turns on at %s\n", time); 
     } 
     else { 
      printf("Heating turns off at %s\n", time); 
     } 
     wasOn = on; 
    } 
} 

這裏是輸出:

Heating turns off at 03:00 
Heating turns off at 03:01 
Heating turns off at 03:02 
Heating turns off at 03:03 
Heating turns off at 03:04 
Heating turns off at 03:05 
Heating turns off at 03:06 
Heating turns off at 03:07 
Heating turns off at 03:08 
Heating turns off at 03:09 
Heating turns off at 03:10 
Heating turns off at 03:11 
Heating turns off at 03:12 
Heating turns off at 03:13 
Heating turns off at 03:14 
Heating turns off at 03:15 
Heating turns off at 03:16 
Heating turns off at 03:17 
Heating turns off at 03:18 
Heating turns off at 03:19 
Heating turns off at 03:20 
Heating turns off at 03:21 
Heating turns off at 03:22 
Heating turns off at 03:23 
Heating turns off at 03:24 
Heating turns off at 03:25 
Heating turns off at 03:26 
Heating turns off at 03:27 
Heating turns off at 03:28 
Heating turns off at 03:29 
Heating turns off at 03:30 
Heating turns off at 03:31 
Heating turns off at 03:32 
Heating turns off at 03:33 
Heating turns off at 03:34 
Heating turns off at 03:35 
Heating turns off at 03:36 
Heating turns off at 03:37 
Heating turns off at 03:38 
Heating turns off at 03:39 
Heating turns off at 03:40 
Heating turns off at 03:41 
Heating turns off at 03:42 
Heating turns off at 03:43 
Heating turns off at 03:44 
Heating turns off at 03:45 
Heating turns off at 03:46 
Heating turns off at 03:47 
Heating turns off at 03:48 
Heating turns off at 03:49 
Heating turns off at 03:50 
Heating turns off at 03:51 
Heating turns off at 03:52 
Heating turns off at 03:53 
Heating turns off at 03:54 
Heating turns off at 03:55 
Heating turns off at 03:56 
Heating turns off at 03:57 
Heating turns off at 03:58 
Heating turns off at 03:59 
Heating turns off at 04:00 
Heating turns off at 04:01 
Heating turns off at 04:02 
Heating turns off at 04:03 
Heating turns off at 04:04 
Heating turns off at 04:05 
Heating turns off at 04:06 
Heating turns off at 04:07 
Heating turns off at 04:08 
Heating turns off at 04:09 
Heating turns off at 04:10 
Heating turns off at 04:11 
Heating turns off at 04:12 
Heating turns off at 04:13 
Heating turns off at 04:14 
Heating turns off at 04:15 
Heating turns off at 04:16 
Heating turns off at 04:17 
Heating turns off at 04:18 
Heating turns off at 04:19 
Heating turns off at 04:20 
Heating turns off at 04:21 
Heating turns off at 04:22 
Heating turns off at 04:23 
Heating turns off at 04:24 
Heating turns off at 04:25 
Heating turns off at 04:26 
Heating turns off at 04:27 
Heating turns off at 04:28 
Heating turns off at 04:29 
Heating turns off at 04:30 
Heating turns off at 04:31 
Heating turns off at 04:32 
Heating turns off at 04:33 
Heating turns off at 04:34 
Heating turns off at 04:35 
Heating turns off at 04:36 
Heating turns off at 04:37 
Heating turns off at 04:38 
Heating turns off at 04:39 
Heating turns off at 04:40 
Heating turns off at 04:41 
Heating turns off at 04:42 
Heating turns off at 04:43 
Heating turns off at 04:44 
Heating turns off at 04:45 
Heating turns off at 04:46 
Heating turns off at 04:47 
Heating turns off at 04:48 
Heating turns off at 04:49 
Heating turns off at 04:50 
Heating turns off at 04:51 
Heating turns off at 04:52 
Heating turns off at 04:53 
Heating turns off at 04:54 
Heating turns off at 04:55 
Heating turns off at 04:56 
Heating turns off at 04:57 
Heating turns off at 04:58 
Heating turns off at 04:59 
Heating turns off at 05:00 
Heating turns off at 05:01 
Heating turns off at 05:02 
Heating turns off at 05:03 
Heating turns off at 05:04 
Heating turns off at 05:05 
Heating turns off at 05:06 
Heating turns off at 05:07 
Heating turns off at 05:08 
Heating turns off at 05:09 
Heating turns off at 05:10 
Heating turns off at 05:11 
Heating turns off at 05:12 
Heating turns off at 05:13 
Heating turns off at 05:14 
Heating turns off at 05:15 
Heating turns off at 05:16 
Heating turns off at 05:17 
Heating turns off at 05:18 
Heating turns off at 05:19 
Heating turns off at 05:20 
Heating turns off at 05:21 
Heating turns off at 05:22 
Heating turns off at 05:23 
Heating turns off at 05:24 
Heating turns off at 05:25 
Heating turns off at 05:26 
Heating turns off at 05:27 
Heating turns off at 05:28 
Heating turns off at 05:29 
Heating turns off at 05:30 
Heating turns off at 16:00 
Heating turns off at 16:01 
Heating turns off at 16:02 
Heating turns off at 16:03 
Heating turns off at 16:04 
Heating turns off at 16:05 
Heating turns off at 16:06 
Heating turns off at 16:07 
Heating turns off at 16:08 
Heating turns off at 16:09 
Heating turns off at 16:10 
Heating turns off at 16:11 
Heating turns off at 16:12 
Heating turns off at 16:13 
Heating turns off at 16:14 
Heating turns off at 16:15 
Heating turns off at 16:16 
Heating turns off at 16:17 
Heating turns off at 16:18 
Heating turns off at 16:19 
Heating turns off at 16:20 
Heating turns off at 16:21 
Heating turns off at 16:22 
Heating turns off at 16:23 
Heating turns off at 16:24 
Heating turns off at 16:25 
Heating turns off at 16:26 
Heating turns off at 16:27 
Heating turns off at 16:28 
Heating turns off at 16:29 
Heating turns off at 16:30 
Heating turns off at 16:31 
Heating turns off at 16:32 
Heating turns off at 16:33 
Heating turns off at 16:34 
Heating turns off at 16:35 
Heating turns off at 16:36 
Heating turns off at 16:37 
Heating turns off at 16:38 
Heating turns off at 16:39 
Heating turns off at 16:40 
Heating turns off at 16:41 
Heating turns off at 16:42 
Heating turns off at 16:43 
Heating turns off at 16:44 
Heating turns off at 16:45 
Heating turns off at 16:46 
Heating turns off at 16:47 
Heating turns off at 16:48 
Heating turns off at 16:49 
Heating turns off at 16:50 
Heating turns off at 16:51 
Heating turns off at 16:52 
Heating turns off at 16:53 
Heating turns off at 16:54 
Heating turns off at 16:55 
Heating turns off at 16:56 
Heating turns off at 16:57 
Heating turns off at 16:58 
Heating turns off at 16:59 
Heating turns off at 17:00 
Heating turns off at 17:01 
Heating turns off at 17:02 
Heating turns off at 17:03 
Heating turns off at 17:04 
Heating turns off at 17:05 
Heating turns off at 17:06 
Heating turns off at 17:07 
Heating turns off at 17:08 
Heating turns off at 17:09 
Heating turns off at 17:10 
Heating turns off at 17:11 
Heating turns off at 17:12 
Heating turns off at 17:13 
Heating turns off at 17:14 
Heating turns off at 17:15 
Heating turns off at 17:16 
Heating turns off at 17:17 
Heating turns off at 17:18 
Heating turns off at 17:19 
Heating turns off at 17:20 
Heating turns off at 17:21 
Heating turns off at 17:22 
Heating turns off at 17:23 
Heating turns off at 17:24 
Heating turns off at 17:25 
Heating turns off at 17:26 
Heating turns off at 17:27 
Heating turns off at 17:28 
Heating turns off at 17:29 
Heating turns off at 17:30 
Heating turns off at 17:31 
Heating turns off at 17:32 
Heating turns off at 17:33 
Heating turns off at 17:34 
Heating turns off at 17:35 
Heating turns off at 17:36 
Heating turns off at 17:37 
Heating turns off at 17:38 
Heating turns off at 17:39 
Heating turns off at 17:40 
Heating turns off at 17:41 
Heating turns off at 17:42 
Heating turns off at 17:43 
Heating turns off at 17:44 
Heating turns off at 17:45 
Heating turns off at 17:46 
Heating turns off at 17:47 
Heating turns off at 17:48 
Heating turns off at 17:49 
Heating turns off at 17:50 
Heating turns off at 17:51 
Heating turns off at 17:52 
Heating turns off at 17:53 
Heating turns off at 17:54 
Heating turns off at 17:55 
Heating turns off at 17:56 
Heating turns off at 17:57 
Heating turns off at 17:58 
Heating turns off at 17:59 
Heating turns off at 18:00 
Heating turns off at 18:01 
Heating turns off at 18:02 
Heating turns off at 18:03 
Heating turns off at 18:04 
Heating turns off at 18:05 
Heating turns off at 18:06 
Heating turns off at 18:07 
Heating turns off at 18:08 
Heating turns off at 18:09 
Heating turns off at 18:10 
Heating turns off at 18:11 
Heating turns off at 18:12 
Heating turns off at 18:13 
Heating turns off at 18:14 
Heating turns off at 18:15 
Heating turns off at 18:16 
Heating turns off at 18:17 
Heating turns off at 18:18 
Heating turns off at 18:19 
Heating turns off at 18:20 
Heating turns off at 18:21 
Heating turns off at 18:22 
Heating turns off at 18:23 
Heating turns off at 18:24 
Heating turns off at 18:25 
Heating turns off at 18:26 
Heating turns off at 18:27 
Heating turns off at 18:28 
Heating turns off at 18:29 
Heating turns off at 22:00 
Heating turns off at 22:01 
Heating turns off at 22:02 
Heating turns off at 22:03 
Heating turns off at 22:04 
Heating turns off at 22:05 
Heating turns off at 22:06 
Heating turns off at 22:07 
Heating turns off at 22:08 
Heating turns off at 22:09 
Heating turns off at 22:10 
Heating turns off at 22:11 
Heating turns off at 22:12 
Heating turns off at 22:13 
Heating turns off at 22:14 
Heating turns off at 22:15 
Heating turns off at 22:16 
Heating turns off at 22:17 
Heating turns off at 22:18 
Heating turns off at 22:19 
Heating turns off at 22:20 
Heating turns off at 22:21 
Heating turns off at 22:22 
Heating turns off at 22:23 
Heating turns off at 22:24 
Heating turns off at 22:25 
Heating turns off at 22:26 
Heating turns off at 22:27 
Heating turns off at 22:28 
Heating turns off at 22:29 
Heating turns off at 22:30 
Heating turns off at 22:31 
Heating turns off at 22:32 
Heating turns off at 22:33 
Heating turns off at 22:34 
Heating turns off at 22:35 
Heating turns off at 22:36 
Heating turns off at 22:37 
Heating turns off at 22:38 
Heating turns off at 22:39 
Heating turns off at 22:40 
Heating turns off at 22:41 
Heating turns off at 22:42 
Heating turns off at 22:43 
Heating turns off at 22:44 
Heating turns off at 22:45 
Heating turns off at 22:46 
Heating turns off at 22:47 
Heating turns off at 22:48 
Heating turns off at 22:49 
Heating turns off at 22:50 
Heating turns off at 22:51 
Heating turns off at 22:52 
Heating turns off at 22:53 
Heating turns off at 22:54 
Heating turns off at 22:55 
Heating turns off at 22:56 
Heating turns off at 22:57 
Heating turns off at 22:58 
Heating turns off at 22:59 
Heating turns off at 23:00 
Heating turns off at 23:01 
Heating turns off at 23:02 
Heating turns off at 23:03 
Heating turns off at 23:04 
Heating turns off at 23:05 
Heating turns off at 23:06 
Heating turns off at 23:07 
Heating turns off at 23:08 
Heating turns off at 23:09 
Heating turns off at 23:10 
Heating turns off at 23:11 
Heating turns off at 23:12 
Heating turns off at 23:13 
Heating turns off at 23:14 
Heating turns off at 23:15 
Heating turns off at 23:16 
Heating turns off at 23:17 
Heating turns off at 23:18 
Heating turns off at 23:19 
Heating turns off at 23:20 
Heating turns off at 23:21 
Heating turns off at 23:22 
Heating turns off at 23:23 
Heating turns off at 23:24 
Heating turns off at 23:25 
Heating turns off at 23:26 
Heating turns off at 23:27 
Heating turns off at 23:28 
Heating turns off at 23:29 
Heating turns off at 23:30 
Heating turns off at 23:31 
Heating turns off at 23:32 
Heating turns off at 23:33 
Heating turns off at 23:34 
Heating turns off at 23:35 
Heating turns off at 23:36 
Heating turns off at 23:37 
Heating turns off at 23:38 
Heating turns off at 23:39 
Heating turns off at 23:40 
Heating turns off at 23:41 
Heating turns off at 23:42 
Heating turns off at 23:43 
Heating turns off at 23:44 
Heating turns off at 23:45 
Heating turns off at 23:46 
Heating turns off at 23:47 
Heating turns off at 23:48 
Heating turns off at 23:49 
Heating turns off at 23:50 
Heating turns off at 23:51 
Heating turns off at 23:52 
Heating turns off at 23:53 
Heating turns off at 23:54 

,這裏是日程表(由univesity提供):

#define heatingScheduleTypicalValues {off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , off , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , on , off , off , off , off , off } 
+0

你從來沒有提到'heatingScheduleTypicalVaues'可以被覆蓋。 – timrau

+0

這是在我的主要功能。 'int main(){ \t char timeStr [5]; \t heatingScheduleType heatingSchedule [1440] = heatingScheduleTypicalValues; \t setbuf(stdout,0); \t interpretTime(65,timeStr); //測試解釋時間 \t printf(「%s \ n」,timeStr); \t printHeatingSchedule(heatingSchedule); // Test printHeatingSchedule \t return 0; }' – Greatmar2

+0

'schedule [i]'的數據類型是什麼,即'off','on'是如何存儲的? –

回答

2

您需要將schedule的部分提取到正確的結構中,而不僅僅是int

而且TIMESTR是不夠的相當長所以你的一些其他變量的可能會被interpretTime

+0

枚舉(int)做得很好,但是你對'timeStr'的注意很小。 1+爲此。 – alk

+0

謝謝,timeStr太小是正確的。一旦我糾正它,我的程序開始正常運行。這是我的錯誤,假設我在聲明字符串的長度時不必考慮轉義字符。 – Greatmar2

+0

heatingScheduleType與enum heatingScheduleEnum不一樣(我認爲使用int/enum可以交替使用,這是不好的做法) – LoztInSpace