Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 19.10.2010, 12:28   #1
bad_patefa
Пользователь
 
Аватар для bad_patefa
 
Регистрация: 15.09.2010
Сообщений: 14
По умолчанию Delphi, перевод секунд в минуты

Здравствуйте!
Программа даёт определённое число в секундах, это число необходимо перевести и в минуты и в секунды.

Пробывал так, но программа получается не точная, перводит только в минуты, ито округляя
Код:
procedure TForm1.Button13Click(Sender: TObject);
 var z,x,c:Extended;
begin
if Edit9.Text>'59' then
//
else
begin
 z:=strtoint(Edit9.text);
 x:=60;
 c:=z/x;
 Edit7.Text:=FloatToStrF(c,ffFixed,5,0); //округляю чтоб было без многочисленных знаков...
end;
end;
Заранее спасибо!
bad_patefa вне форума Ответить с цитированием
Старый 19.10.2010, 12:39   #2
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

sek- секунды
z:=разделил секунды на 60
k:=целую часть запомненного числа умножь на 60 сек
rez:=отними от введенных секунд(sek) то что запомнил выше(k)
усЁ
k - минут
rez - секунд
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.
Niro вне форума Ответить с цитированием
Старый 19.10.2010, 13:17   #3
bad_patefa
Пользователь
 
Аватар для bad_patefa
 
Регистрация: 15.09.2010
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Niro Посмотреть сообщение
k:=целую часть запомненного числа умножь на 60 сек
rez:=отними от введенных секунд(sek) то что запомнил выше(k)
Спасибо. Но чтот не понял как сделать этот пункт
bad_patefa вне форума Ответить с цитированием
Старый 19.10.2010, 13:22   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

Экзотичный вариант за одну операцию деления:
Код:
 var sek,min:integer;
begin
 sek:=30;
 asm
  mov eax,[sek]
  xor edx,edx
  mov ebx,60
  div ebx
  mov [min],eax
  mov [sek],edx;
 end;
 write(min,':',sek);readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.10.2010, 13:34   #5
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

для выделения целой части числа испульзуй функцию trunc(x), где х вещественное число т.е.
z:=strtoint(Edit9.text);
c:=z/60;
rez:=(trunc(c)*60)-z;
b:=trunc(c);
В результате получаем b - минут, rez - секунд
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.

Последний раз редактировалось Niro; 19.10.2010 в 13:40.
Niro вне форума Ответить с цитированием
Старый 19.10.2010, 13:35   #6
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 18,305
По умолчанию

Есть еще функции деления на цело и получения остатка от деления...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 19.10.2010, 14:43   #7
bad_patefa
Пользователь
 
Аватар для bad_patefa
 
Регистрация: 15.09.2010
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Niro Посмотреть сообщение
для выделения целой части числа испульзуй функцию trunc(x), где х вещественное число т.е.
z:=strtoint(Edit9.text);
c:=z/60;
rez:=(trunc(c)*60)-z;
b:=trunc(c);
В результате получаем b - минут, rez - секунд
Всем спасибо. Воспользовался кодом Niro, но результат в переменной rez получался отрицательный, поправил, путём добавления
Код:
x:=-1;
rez:=((trunc(c)*60)-z)*x;
Вопрос закрыт.

Последний раз редактировалось bad_patefa; 19.10.2010 в 14:46.
bad_patefa вне форума Ответить с цитированием
Старый 19.10.2010, 14:47   #8
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 18,305
По умолчанию

Ну может можно без множителей? Если попробовать отнять от z, а не наоборот...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 19.10.2010, 18:17   #9
SaiLight
Форумчанин
 
Аватар для SaiLight
 
Регистрация: 10.01.2009
Сообщений: 131
По умолчанию

Почему нельзя так?

Код:
vSec := StrToInt(Edit9.Text);
vMin := vSec div 60;
vSec := vSec - vMin * 60;
vMin - минуты, vSec - секунды.

Последний раз редактировалось SaiLight; 19.10.2010 в 18:20.
SaiLight вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Часы и минуты перевести в минуты!!! evm-evgenij Microsoft Office Excel 8 20.04.2015 09:50
Обратный отсчет в формате минуты и секунды Shouldercannon Общие вопросы Delphi 8 14.04.2010 12:44
Таймер. Конвертирование ms в часы,минуты, секунды.. ищу решения.. Человек_Борща Общие вопросы Delphi 3 08.04.2010 09:51
с++,градусы и минуты Krezol Помощь студентам 3 17.02.2010 21:28


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS