Задача
Расписание звонков. В учебном заведении задается начало учебного дня, продолжительность «пары» или урока, продолжительность обычного и большого перерывов (и их «место» в расписании), количество пар(уроков). Получить расписание звонков на весь учебный день.
Задаем начальные значения в теле программы.
Начало урока — 8:45
Продолжительность обычной перерыва — 30 минут.
Продолжительность большого перерыва — 45 минут.
Место в расписании и количество уроков задается в массиве time_table .
Результат:
1 2 3 4 5 6 7 8 9 10 |
8 : 45 9 : 30 10 : 0 10 : 45 11 : 15 12 : 0 12 : 30 13 : 15 14 : 0 14 : 45 |
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
#include <iostream> #include <vector> #include <time.h> using namespace std; enum TIME_TABLE_TYPE { TT_LESSON,TT_SMALL_BREAK,TT_LONG_BREAK }; struct tm add_time(struct tm time1, struct tm time2); void print_time(struct tm timeinfo); int main() { struct tm lesson_start; struct tm lesson_length; struct tm small_break; struct tm long_break; // Init default values lesson_start.tm_hour = 8; lesson_start.tm_min = 45; lesson_length.tm_hour = 0; lesson_length.tm_min = 45; small_break.tm_hour = 0; small_break.tm_min = 30; long_break.tm_hour = 0; long_break.tm_min = 45; // Init time_table vector <int> time_table = {TT_LESSON,TT_SMALL_BREAK,TT_LESSON,TT_SMALL_BREAK,TT_LESSON,TT_SMALL_BREAK,TT_LESSON, TT_LONG_BREAK,TT_LESSON}; struct tm timeinfo = lesson_start; for(vector<int>::iterator i = time_table.begin(); i != time_table.end(); i++) { if (*i == TT_LESSON) { print_time(timeinfo); timeinfo = add_time(timeinfo,lesson_length); print_time(timeinfo); } else if (*i == TT_SMALL_BREAK) { timeinfo = add_time(timeinfo,small_break); } else if (*i == TT_LONG_BREAK) { timeinfo = add_time(timeinfo,long_break); } } return 0; } void print_time(struct tm timeinfo) { cout << timeinfo.tm_hour << " : " << timeinfo.tm_min << endl; } struct tm add_time(struct tm time1, struct tm time2) { time1.tm_hour +=time2.tm_hour; time1.tm_min += time2.tm_min; if (time1.tm_min >= 60) { time1.tm_hour = time1.tm_hour + 1; time1.tm_min -= 60; } return time1; } |
Используется структура tm для хранения времени.
Ссылка на код.
Решение на Java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
import java.util.*; import java.lang.*; import java.io.*; class tm { public int HOUR; public int MINUTE; public static void main (String[] args) {} } class Main { public static void main (String[] args) { tm lesson_start =new tm() ; tm lesson_length =new tm() ; tm small_break =new tm() ; tm long_break=new tm() ; tm timeinfo =new tm() ; lesson_start.HOUR = 8; lesson_start.MINUTE = 45; lesson_length.HOUR = 0; lesson_length.MINUTE = 45; small_break.HOUR = 0; small_break.MINUTE = 30; long_break.HOUR = 0; long_break.MINUTE = 45; timeinfo.HOUR = lesson_start.HOUR; timeinfo.MINUTE = lesson_start.MINUTE; // Init time_table int LESSON = 1, SMALL_BREAK = 2, LONG_BREAK = 3; int time_table []= { LESSON, SMALL_BREAK, LESSON, SMALL_BREAK, LESSON, SMALL_BREAK, LESSON, LONG_BREAK, LESSON }; for(int i = 0; i < 9; i++) { if (time_table [i] == LESSON) { print_time(timeinfo); timeinfo = add_time(timeinfo,lesson_length); print_time(timeinfo); } else if (time_table [i] == SMALL_BREAK) { timeinfo = add_time(timeinfo,small_break); } else if (time_table [i] == LONG_BREAK) { timeinfo = add_time(timeinfo,long_break); } } } static void print_time(tm timeinfo) { System.out.println(timeinfo.HOUR + ":"+timeinfo.MINUTE); } static tm add_time(tm time1, tm time2) { time1.HOUR +=time2.HOUR; time1.MINUTE += time2.MINUTE; if (time1.MINUTE >= 60) { time1.HOUR += 1; time1.MINUTE -= 60; } return time1; } } |
Зачтено