Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ] > Код на шару!
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.02.2017, 15:58
vincentblake vincentblake вне форума
Прохожий
 
Регистрация: 31.01.2017
Сообщения: 8
Версия Delphi: Depli 7
Репутация: 10
По умолчанию Напишите программу, запрашивающую у тренера сбор-ной по лыжам время в минутах

Добрый день помогите написать программку

Что нужно знать для выполнения работы:
1. Компоненты страниц Standard и Additional, их назначение, свойства, методы.
2. Обработка событий.

Напишите программу, запрашивающую у тренера сбор-ной колледжа по лыжам время в минутах и секундах (с точностью до сотых долей секунды) трех победителей 10-километровой гонки. Если какие-то результаты различаются меньше, чем на секунду, напечатать:
ВОТ ТАК БОРЬБА ШЛА ЗА _________________ МЕДАЛЬ!
Изобразите в виде гистограммы время трех призеров.

Попробовал через MaskEdit вводить время , но дальше не продвинулся, не знаю как через function MilliSecondsBetween(const ANow, AThen: TDateTime): Int64 ,выводить сообщение о борьбе за 1 или 2-ую медаль
Кидаю свои наработки
Вложения
Тип файла: rar Lab2.rar (235.7 Кбайт, 0 просмотров)
Ответить с цитированием
  #2  
Старый 08.02.2017, 19:58
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,106
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну, типа:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
var
  // Результаты 1-3 места
  AResults : Array [1..3] Of TDateTime;
 
function CheckResults(I, J : Integer; Medal : String) : String;
const
   cMsg = 'ВОТ ТАК БОРЬБА ШЛА ЗА %s МЕДАЛЬ';
begin
  Result := '';
  If MilliSecondsBetween(AResults[i],AResults[J]) < 1000 Then
    Result := Format(cMsg,[Medal]);
end;

Использование:
Код:
1
2
WriteLn(CheckResults(1,2,'ЗОЛОТУЮ'));
WriteLn(CheckResults(2,3,'СЕРЕБРЯННУЮ'));
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
vincentblake (14.02.2017)
  #3  
Старый 14.02.2017, 21:27
vincentblake vincentblake вне форума
Прохожий
 
Регистрация: 31.01.2017
Сообщения: 8
Версия Delphi: Depli 7
Репутация: 10
По умолчанию

попробовал использовать ,но что-то ничего не происходит,не выводит сообщение,можешь подсказать что куда правильно распихать?
Код:
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, Series,DateUtils;
 
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    Label3: TLabel;
    Edit3: TEdit;
    Button2: TButton;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Edit4: TEdit;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Edit5: TEdit;
    Edit6: TEdit;
    Button3: TButton;
    Label11: TLabel;
    Label12: TLabel;
    Button4: TButton;
    Chart1: TChart;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Edit7: TEdit;
    Edit8: TEdit;
    Edit9: TEdit;
    Series1: TBarSeries;
    Series2: TBarSeries;
    Series3: TBarSeries;
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
 
  private
 
  function CheckResults(I, J : Integer; Medal : String) : String;
 
 
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  x,y,z,res:integer;
  AResults : Array [1..3] Of TDateTime;
 
implementation
 
{$R *.dfm}
 
 
procedure TForm1.Button3Click(Sender: TObject);
begin
 close;
end;
 
procedure TForm1.Button4Click(Sender: TObject);
begin
 Edit1.Text:='';
 Edit2.Text:='';
 Edit3.Text:='';
 Edit4.Text:='';
 Edit5.Text:='';
 Edit6.text:='';
 Label4.Caption:='';
 Label11.Caption:='';
 Label12.Caption:='';
 Edit7.Text:='';
 Edit8.Text:='';
 Edit9.Text:='';
 Series1.Clear;
 Series2.Clear;
 Series3.Clear;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
Series1.Clear;
Series2.Clear;
Series3.Clear;
x:=strtoint(edit1.text);        //берем минуты
y:=strtoint(edit6.text);        //берем секунды
z:=strtoint(edit7.text);        //берем милисекунды
res:=x*6000+(y*100)+z;         //переводим все в миллисекунды и пишем в переменную result
Chart1.Series[0].AddXY(0,res);    //добавляем интервал от 0 до result на график
 
 
 
//аналогично для других призеров
x:=strtoint(edit3.text);
y:=strtoint(edit4.text);
z:=strtoint(edit8.text);
res:=x*6000+(y*100)+z;
Chart1.Series[1].AddXY(0,res);
 
x:=strtoint(edit5.text);
y:=strtoint(edit2.text);
z:=strtoint(edit9.text);
res:=x*6000+(y*100)+z;
Chart1.Series[2].AddXY(0,res);
 
end;
 
function TForm1.CheckResults(I, J: Integer; Medal: String): String;
 
const
   cMsg = 'ВОТ ТАК БОРЬБА ШЛА ЗА %s МЕДАЛЬ';
 
begin
    Result := '';
  If MilliSecondsBetween(AResults[i],AResults[J]) < 1000 Then
    Result := Format(cMsg,[Medal]);
      WriteLn(CheckResults(1,2,'ЗОЛОТУЮ'));
    WriteLn(CheckResults(2,3,'СЕРЕБРЯННУЮ'));
 
end;
end.
Вложения
Тип файла: rar 1.rar (234.7 Кбайт, 1 просмотров)

Последний раз редактировалось vincentblake, 14.02.2017 в 21:48.
Ответить с цитированием
  #4  
Старый 14.02.2017, 23:37
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,106
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

мля, конечно не выводит.
я ж для консоли сделал.
ну и не считая того, что ты просто тупо воткнул мой код даже не подумав.
Удивительно, если это вообшще скомпилилось.
Ну и вообще, где у тебя заполнение массива? и где вызов функции?
Ответить с цитированием
  #5  
Старый 15.02.2017, 00:32
vincentblake vincentblake вне форума
Прохожий
 
Регистрация: 31.01.2017
Сообщения: 8
Версия Delphi: Depli 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
мля, конечно не выводит.
я ж для консоли сделал.
ну и не считая того, что ты просто тупо воткнул мой код даже не подумав.
Удивительно, если это вообшще скомпилилось.
Ну и вообще, где у тебя заполнение массива? и где вызов функции?
Извините но я только начал знакомиться с дэлфи))еще не знаком с массивами и толком не умею пользоваться функциями,да и кучей всего другого,сегодня пробовал найти инфу.
На данном этапе я понятия не имею как сделать вывод сообщения если разница меньше секкунды(знаю что есть функция MilliSecondsBetween)но вот как использовать...
Ответить с цитированием
  #6  
Старый 15.02.2017, 02:50
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,106
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну, например, так что-ли...
Код:
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
var
  AResults : Array [1..3] Of Int64;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
Series1.Clear;
Series2.Clear;
Series3.Clear;
x:=strtoint(edit1.text);        //берем минуты
y:=strtoint(edit6.text);        //берем секунды
z:=strtoint(edit7.text);        //берем милисекунды
res:=x*6000+(y*100)+z;         //переводим все в миллисекунды и пишем в переменную result
AResults[1] := res;
Chart1.Series[0].AddXY(0,res);    //добавляем интервал от 0 до result на график
  
  
  
//аналогично для других призеров
x:=strtoint(edit3.text);
y:=strtoint(edit4.text);
z:=strtoint(edit8.text);
res:=x*6000+(y*100)+z;
AResults[2] := res;
Chart1.Series[1].AddXY(0,res);
  
x:=strtoint(edit5.text);
y:=strtoint(edit2.text);
z:=strtoint(edit9.text);
res:=x*6000+(y*100)+z;
AResults[3] := res;
Chart1.Series[2].AddXY(0,res);
  
    ShowMessage(CheckResults(1,2,'ЗОЛОТУЮ'));
    ShowMessage(CheckResults(2,3,'СЕРЕБРЯННУЮ'));
end;
  
function TForm1.CheckResults(I, J: Integer; Medal: String): String;
const
   cMsg = 'ВОТ ТАК БОРЬБА ШЛА ЗА %s МЕДАЛЬ';
begin
  Result := '';
  If Abs(AResults[i]-AResults[J]) < 1000 Then
    Result := Format(cMsg,[Medal]);
end;
Т.е.:
1. Поправил тип в массиве
2. Добавил заполнение массива в твою процедуру и вывод сообщений
3. Поправил функцию
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
vincentblake (15.02.2017)
  #7  
Старый 17.02.2017, 20:51
Nikman Nikman вне форума
Прохожий
 
Регистрация: 17.02.2017
Сообщения: 1
Версия Delphi: Delphi 7
Репутация: 10
Восклицание Помогите написать прогу

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

Последний раз редактировалось Nikman, 17.02.2017 в 22:56.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:37.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025