BarD
|
Дата: Четверг, 28.08.2014, 12:24:51 | Сообщение # 1 |
|
Сообщений: 943
Репутация: 137 [ +/- ]
|
|
Знаю, что вопрос глупый. Как можно получить целую часть результата от деления и остаток? В pascal функции mod и div использовались для этого. А в Pawn?
И второй вопрос. У нас есть некоторое количество секунд (пусть будет 153). Как их преобразовать в вид "Часы:минуты:секунды"?
Добавлено (28.08.2014, 12:24:51) --------------------------------------------- Вопрос решен. Помог: R1KO.
1) в результате, в переменной "а" будет записан остаток от деления b на c. Например: В "а" будет 3.
2) Функция, переводящая время из секунд в Дни, Часы, Минуты, Секунды.
Код stock bool:FriendlyTime(time_s, String:str_ftime[], str_ftime_len, bool:compact=true) { decl String:days_pf[16]; decl String:hrs_pf[16]; decl String:mins_pf[16]; decl String:secs_pf[16];
if(compact) { days_pf = "д"; hrs_pf = "ч"; mins_pf = "м"; secs_pf = "с"; } else { days_pf = " Дней"; hrs_pf = " Часов"; mins_pf = " Минут"; secs_pf = " Секунд"; }
if(time_s < 0) { str_ftime[0] = '\0'; return(false); }
new days = time_s/86400; new hrs = (time_s/3600)%24; new mins = (time_s/60)%60; new secs = time_s%60;
if(time_s < 60) Format(str_ftime, str_ftime_len, "%u%s", secs, secs_pf); else if(time_s < 3600) Format(str_ftime, str_ftime_len, "%u%s %u%s", mins, mins_pf, secs, secs_pf); else if(time_s < 86400) Format(str_ftime, str_ftime_len, "%u%s %u%s", hrs, hrs_pf, mins, mins_pf); else Format(str_ftime, str_ftime_len, "%u%s %u%s", days, days_pf, hrs, hrs_pf);
return(true); }
time_s - время в секундах, str_ftime - строка, в которой будет записан результат, str_ftime_len - длина строки, compact - если true, то будет писать "5 д, 20 ч, 4 м, 2 с", иначе будет полными словами.
Сообщение отредактировал BarD - Четверг, 28.08.2014, 12:25:20 |
|
| |
хвостег
|
Дата: Четверг, 28.08.2014, 14:14:28 | Сообщение # 2 |
|
Сообщений: 161
Репутация: 53 [ +/- ]
|
|
Уотакуот Код new String:_t_p[][] = { "д", "ч", "м", "c", "Дней", "Часов", "Минут", "Секунд" }
stock bool:FriendlyTime(time_s, String:str_ftime[], str_ftime_len, bool:long = false) { if(time_s < 0) return false; new time[4]; time[0] = time_s / 86400; time[1] = (time_s / 3600) % 24; time[2] = (time_s / 60) % 60; time[3] = time_s % 60; new pos = -1; if(time[0]) pos = 0; else if(time[1]) pos = 1; else if(time[2]) pos = 2; else pos = 3; new c_i = 4 * _:long; str_ftime[0] = '\0'; for(new i = pos; i < 4; i++) Format(str_ftime, str_ftime_len, i > 2 ? "%s%d %s" : "%s%d %s ", str_ftime, time[i], _t_p[c_i+i]);
return true; }
Сообщение отредактировал хвостег - Четверг, 28.08.2014, 14:33:50 |
|
| |
BarD
|
Дата: Четверг, 28.08.2014, 17:31:44 | Сообщение # 3 |
|
Сообщений: 943
Репутация: 137 [ +/- ]
|
|
Спасибо!)
|
|
| |