Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на Delphi и Lazarus


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

Асмик Гаряка
Статус: Советник
Рейтинг: 113
∙ повысить рейтинг »
Gluck
Статус: Студент
Рейтинг: 84
∙ повысить рейтинг »
puporev
Статус: Профессор
Рейтинг: 19
∙ повысить рейтинг »

∙ Pascal / Delphi / Lazarus

Номер выпуска:1822
Дата выхода:20.03.2020, 17:45
Администратор рассылки:Зенченко Константин Николаевич (Старший модератор)
Подписчиков / экспертов:38 / 39
Вопросов / ответов:3 / 12

Консультация # 19446: Здравствуйте уважаемые эксперты! Возник следующий вопрос: Имеются два времени в формате hh:mm:ss, например первое: 14:34:12 и второе 16:32:55, причём второе время всегда больше первого (первое время начало "сессии", второе конец). Вопрос в следующем: как получить разность этого времени в формате hh:mm:ss или в формате X часов Y ми...
Консультация # 9739: Добрый день Помогите решить (приложение)...
Консультация # 195738: Здравствуйте! У меня возникли сложности с таким вопросом: Решение системы линейных алгебраических уравнений метод квадратных корней (Холецкого) Матрица А коэффициентов системы- 1,53 1,61 1,43 2,35 2,31 2,07 3,83 3,73 3,45 Столбец свободных членов b- -5,13 -3,69 -5,98 в Delphi ...

Консультация # 19446:

Здравствуйте уважаемые эксперты!
Возник следующий вопрос:
Имеются два времени в формате hh:mm:ss, например первое: 14:34:12 и второе 16:32:55, причём второе время всегда больше первого (первое время начало "сессии", второе конец). Вопрос в следующем: как получить разность этого времени в формате hh:mm:ss или в формате X часов Y минут Z секунд?
Надеюсь на вашу помощь.

Дата отправки: 09.04.2005, 21:57
Вопрос задал: Подковырин Андрей Вадимович
Всего ответов: 7
Страница онлайн-консультации »


Консультирует Bochvarov NikB:

Здравствуйте, Подковырин Андрей Вадимович!
DT: tSystemTime
DT.wYear:=10;
DT.wMonth:=10;
DT. wDay:=10;
DT.Hours:=StrToInt(Copy(s,1,2));
DT.Minute:=StrToInt(Copy(s,4,2));
DT.Second:=...
T1:=SystemTimeToDateTime...
T2:=
DateTimeToString(Result,\'HH:nn:ss\',T2-T1);

Консультировал: Bochvarov NikB
Дата отправки: 09.04.2005, 23:23
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует John Freeman:

Здравствуйте, Подковырин Андрей Вадимович!
1) Tdatetime1-TDateTime2 - это число
2) DatetimeToStr
3) Обрезать то что вышло из п2

Консультировал: John Freeman
Дата отправки: 10.04.2005, 00:56
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Malish:

Здравствуйте, Подковырин Андрей Вадимович!
Вопрос не дозадан!!!
Я понял что у тебя есть время , и ты его получил с программы , когда прописывал код типа
var
A,B,C : TDateTime;
//Что-то творится
begin
A:=Now;
Edit1.Text := FormatDateTime(\'hh:nn:ss\',A);
end;
//что-то творится
begin
B:=Now;
Edit2.Text := FormatDateTime(\'hh:nn:ss\',B);
end;
//если так то проще некуда
begin
C := B-A;
Edit3.Text := FormatDateTime(\'hh:nn:ss\',C);
end;
Если я понял правильно то вот решение.
Вот вариант когда есть строки 14:34:12 типа string в которых время
C,D,E : TDateTime;
AA,BB,CC : string;
begin
D:=StrToDateTime(AA); //Из строки во время
Edit1.Text := FormatDateTime(\'hh:nn:ss\',D);
E:=StrToDateTime(BB);
Edit2.Text := FormatDateTime(\'hh:nn:ss\',E);
CC:= FormatDateTime(\'hh:nn:ss\',D-E);
Edit3.Text := CC;
end;
Запусти проги и сразу поймешь что тебе надо из этого!
Если что непонятно пиши.

Консультировал: Malish
Дата отправки: 10.04.2005, 01:11
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует corsar:

Здравствуйте, Подковырин Андрей Вадимович!
Вариант 1.
st1,st2 : string; //Время 1 и 2 - строки
h1,m1,s1 : integer; //первое время
h2,m2,s2 : integer; //второе
x,y,z : integer; //разница
......
//Преобразуем время-строку в часы, минуты, секунды
h1:=StrToInt(Copy(st1,1,2));
m1:=StrToInt(Copy(st1,4,2));
s1:=StrToInt(Copy(st1,7,2));
h2:=StrToInt(Copy(st2,1,2));
m2:=StrToInt(Copy(st2,4,2));
s2:=StrToInt(Copy(st2,7,2));
x:=h2-h1; //Разница часов
//Разница минут
if m2>=m1 then y:=m2-m1 else
begin
x:=x-1;
y:=60-m1+m2;
end;
//Разница секунд
if s2>=s1 then z:=s2-s1 else
begin
y:=y-1;
z:=60-s1+s2;
end;
//На выходе разница в формате x:y:z
Вариант 2.
st1,st2,st : string; //Время 1 и 2 - строки
T1,T2,T : TDateTime;
........
T1:=StrToTime(st1);
T2:=StrToTime(st2);
T:=T2-T1;//Разница
st:=TimeToStr(T); //строка - разность времени
TDateTime - стандартный тип Delphi для даты и времени. По сути является просто Real, поэтому с ним можно работать обычными арифмитическими операциями. В данном случае это
вычитание.
функции для работы с типом:
Date - текущая дата
Time - текущее время
//Функции разбиения(формирования) даты/времени на(из) комоненты(ов)
DecodeDate
DecodeTime
EncodeDate
EncodeTime
//Преобразования дата/время <-> строка
DateToStr
TimeToStr
StrToDate
StrToTime

Консультировал: corsar
Дата отправки: 10.04.2005, 14:01
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Boriss:

Здравствуйте, Подковырин Андрей Вадимович!
И еще упомяну модуль DateUtils - в нем дофига всего. Вот, например, смотри группу в приложении

Приложение:

Консультировал: Boriss
Дата отправки: 11.04.2005, 17:29
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Вадим Исаев ака sir Henry (Мастер-Эксперт):

Здравствуйте, Подковырин Андрей Вадимович!
А время то это в каком формате? Что же Вы сомое главное не написали? :)
Если строковое, сто надо написать функцию разбора этой строки, выделить из нее числа и вычитать одно из другого с учетом переноса.

Консультировал: Вадим Исаев ака sir Henry (Мастер-Эксперт)
Дата отправки: 12.04.2005, 05:38
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Полховский Александр Владимиро:

Здравствуйте, Подковырин Андрей Вадимович!
Разбить на 3 строчки функциями ansileftstr, ansirightstr и AnsiMidStr, перевести каждую в число функцией strtoint, посчитать(соответственно, ввести условие, когда число из второго времени меньше числа из первого), перевести обратно функцией inttostr, собрать в 1 строку оператором +. Edit1- первое время, Edit2 - второе.

Приложение:

Консультировал: Полховский Александр Владимиро
Дата отправки: 13.04.2005, 19:21
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 9739:

Добрый день
Помогите решить
(приложение)

Дата отправки: 01.01.2004, 00:01
Вопрос задал: roman
Всего ответов: 4
Страница онлайн-консультации »


Консультирует Strory:

Здравствуйте, roman!
Енто никуда не годится! Школьники учиться вроде закончили, в универах такие задачки не задают... Остаётся только удивляться.
Посему пишу только значимые части программ. Если уж Вы не сможете опосля соорудить программку, то двойку Вам заслуженную!

Приложение:

Консультировал: Strory
Дата отправки: 01.01.2004, 00:01
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Ayl:

Здравствуйте, roman!
Не, ну блин! Не поверю, что это все одно задание! А в семестре чем занимался?
1. Элементарно. Используй функции Pos (найти вхождение подстроки в строку), Delete (удалить из строки c заданной позиции заданное число символов) и Insert (вставить подстроку в строку с заданной позиции).
2. То же ничего сложного. В двойном цикле перебираешь все элементы массива.
3. Чуть сложнее. Тебе нужно добавлять элементы к сумме до тех пор, пока очередной член последовательности не станет меньше заданной точности. Подсказка: A(n) = A(n-1)/n, A(1) = 1.
4. Одним пробелом или несколькими может быть? Если ровно одним пробелом, то проще всего подсчитать кол-во пробелов в строке, число слов будет на 1 больше. Если может быть несколько подряд пробелов, то тебе нужен флаг, показывающий, находишься ты в слове или вне слова. Алгоритм тогда такой:
1. Флаг = 0
2. Пока символ строки = пробел
взять следующий символ
3. Флаг = 1, Счетчик слов = Сч етчик слов + 1
4. Пока символ строки не пробел
взять следующий символ
5. Если строка не закончилась, то перейти к п.1
6. Вывести Счетчик слов

5. Используй Pos и Delete.
6. См. алгоритм для 4-го задания. Тебе здесь не нужен флаг и счетчик слов. Просто ищешь первый пробел за первым словом и вырезаешь из строки все, что до него. Т.е. в п.5 не нужно переходить снова к п.1, а просто удалить до текущей позиции.
7. Какие условия для X? Скорее всего, диапазон и шаг. Формируешь цикл по X и для каждого вычисляешь Sin (x). Остается сформировать аккуратно отображение таблицы на экране. Кстати, если X тебе задан в градусах, то его нужно сначала перевести в радианы.
8. То же, что и 7, но только не забудь проверять на то, что Y != 0
9. Возьми любой алгоритм сортировки и вставь в свою программу. Например, пузырьковую сортировку. Только здесь тебе нужна функция, которая сравнивает 2 строки и выдает один из трех вариантов сравнения: первая строка меньш е, чем вторая; строки равны; первая строка больше, чем вторая. Если могут использоваться и русские буквы, то надо еще дополнительно писать и сравнение по русскому алфавиту.
10. Элементы на главной диагонали определяются тем, что оба индекса у них совпадают. А так задача даже проще, чем 9-я.
Реализуй то, что я тебе написал и если возникнут вопросы - тогда спрашивай. А проги за тебя никто писать просто так не будет.

Консультировал: Ayl
Дата отправки: 01.01.2004, 00:01
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Вадим Исаев ака sir Henry (Мастер-Эксперт):

Приветствую Вас, roman!
Вы вообще не знаете, как это делается? В таком случае программирование Вам не поможет :).

Консультировал: Вадим Исаев ака sir Henry (Мастер-Эксперт)
Дата отправки: 01.01.2004, 00:01
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Boriss:

BLIN!
roman с маленькой буквы! Учись, все Ваши задания - ерунда, недостойная внимания. Кроме того, на подобные вопросы были ответы. Посмотрите в архиве рассылки
Если лень, то шлите дельное предложение, а лучше, заплатите учителю

Консультировал: Boriss
Дата отправки: 01.01.2004, 00:01
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 195738:

Здравствуйте! У меня возникли сложности с таким вопросом:
Решение системы линейных алгебраических уравнений метод
квадратных корней (Холецкого)
Матрица А коэффициентов системы-
1,53 1,61 1,43
2,35 2,31 2,07
3,83 3,73 3,45
Столбец свободных членов b-
-5,13
-3,69
-5,98
в Delphi

Дата отправки: 27.05.2019, 23:50
Вопрос задал: mustang289 (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Зенченко Константин Николаевич (Старший модератор):

Здравствуйте, mustang289!

Код (Pascal) :: выделить код
const
  sizemat = 10;
type
  mattype = array[1..sizemat, 1..sizemat] of real;
  mattype1 = array[1..sizemat] of real;
procedure writemat(var a: mattype; n, m: byte);
var
  i, j: byte;
begin
  writeln;
  for i := 1 to n do
  begin
    for j := 1 to m do
      write(a[i, j]:7:3, ' ');
    writeln
  end;
end;
procedure inputmat(var a: mattype; var d: mattype1; var n: byte);
var
  i, j: byte;
begin
  writeln;
  write('size = ');
  readln(n);
  writeln;
  writeln;
  for i := 1 to n do
    for j := 1 to n do
      begin
        write('a[',i,',',j,']:=');
        read(a[i, j]);
      end;
  writeln;
  for i := 1 to n do
    begin
      write('b[',i,']=');
      readln(d[i]);
    end;
  writeln;
end;
procedure getBnC(var a, b, c: mattype; n: byte);
var
  k, i, a1, j: byte;
begin
  for k := 1 to n do
    for i := 1 to n do
      begin
        if k = i then c[k, i] := 1
          else c[k, i] := 0;
          b[k, i] := 0;
      end;
  for a1 := 1 to n do
  begin
    if a1 = 1 then
    begin
      for i := 1 to n do
        b[i, 1] := a[i, 1];
      for i := 2 to n do
        c[1, i] := a[1, i] / b[1, 1];
    end
    else
    begin
      k := a1;
      for i := a1 to n do
      begin
        b[i, k] := a[i, k];
        for j := 1 to k - 1 do
          b[i, k] := b[i, k] - b[i, j] * c[j, k];
      end;
      i := a1;
      for k := i + 1 to n do
      begin
        c[i, k] := a[i, k];
        for j := 1 to i - 1 do
          c[i, k] := c[i, k] - b[i, j] * c[j, k];
        c[i, k] := c[i, k] / b[i, i];
      end;
    end;
  end;
end;
procedure otvet(var b, c: mattype; d: mattype1; n: byte);
var
  x, y, s: mattype1;
  i, j, k: byte;
  w, q: real;
  y1, x1: mattype;
begin
  for i := 1 to n do
    if i = 1 then y[i] := d[i] / b[i, i]
    else
    begin
      w := 0;
      for k := 1 to i - 1 do
      begin
        y1[i, k] := w + b[i, k] * y[k];
        w := y1[i, k];
      end;
      y[i] := (d[i] - w) / b[i, i];
    end;
  for i := n downto 1 do
    if i = n then x[i] := y[i]
    else
    begin
      q := 0;
      for k := i + 1 to n do
      begin
        x1[i, k] := q + c[i, k] * x[k];
        q := x1[i, k];
      end;
      x[i] := y[i] - q;
    end;
  writeln;
  writeln('roots X:');
  writeln;
  for i := 1 to n do
    writeln('x[', i, ']= ', x[i]:1:4);
  writeln;
end;
var
  a, a1, c, b: mattype;
  d: mattype1;
  n: byte;
begin
  InputMat(a, d, n);
  getBnC(a, b, c, n);
  Writeln('matrix B: ');
  writemat(b, n, n);
  Writeln('matrix C: ');
  writemat(c, n, n);
  otvet(b, c, d, n);
  readln;
end.

Код брался тут.

Удачи!

Консультировал: Зенченко Константин Николаевич (Старший модератор)
Дата отправки: 06.06.2019, 18:56
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное