![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Добрый день помогите написать программку
Что нужно знать для выполнения работы: 1. Компоненты страниц Standard и Additional, их назначение, свойства, методы. 2. Обработка событий. Напишите программу, запрашивающую у тренера сбор-ной колледжа по лыжам время в минутах и секундах (с точностью до сотых долей секунды) трех победителей 10-километровой гонки. Если какие-то результаты различаются меньше, чем на секунду, напечатать: ВОТ ТАК БОРЬБА ШЛА ЗА _________________ МЕДАЛЬ! Изобразите в виде гистограммы время трех призеров. Попробовал через MaskEdit вводить время , но дальше не продвинулся, не знаю как через function MilliSecondsBetween(const ANow, AThen: TDateTime): Int64 ,выводить сообщение о борьбе за 1 или 2-ую медаль Кидаю свои наработки |
|
#2
|
|||
|
|||
|
Ну, типа:
Код:
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;Использование: Код:
WriteLn(CheckResults(1,2,'ЗОЛОТУЮ')); WriteLn(CheckResults(2,3,'СЕРЕБРЯННУЮ')); |
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
vincentblake (14.02.2017)
| ||
|
#3
|
|||
|
|||
|
попробовал использовать ,но что-то ничего не происходит,не выводит сообщение,можешь подсказать что куда правильно распихать?
Код:
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.Последний раз редактировалось vincentblake, 14.02.2017 в 21:48. |
|
#4
|
|||
|
|||
|
мля, конечно не выводит.
я ж для консоли сделал. ну и не считая того, что ты просто тупо воткнул мой код даже не подумав. Удивительно, если это вообшще скомпилилось. Ну и вообще, где у тебя заполнение массива? и где вызов функции? |
|
#5
|
|||
|
|||
|
Цитата:
На данном этапе я понятия не имею как сделать вывод сообщения если разница меньше секкунды(знаю что есть функция MilliSecondsBetween)но вот как использовать... |
|
#6
|
|||
|
|||
|
Ну, например, так что-ли...
Код:
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
|
|||
|
|||
|
Всем добрый вечер, помогите кому не сложно с задачкой, условие которой звучит так:
Задана матрица В каждом столбце матрицы найти произведение четных элементов, и записать их в одномерный массив, если таких элементов нет , то обнулить всю матрицу. В одномерном массиве определить среднее арифметическое полодительных элементов. Если таких нет, то вывести соответсвующее сообщение. Упорядочить массив по убыванию. Заранее спасибо за помощь) Последний раз редактировалось Nikman, 17.02.2017 в 22:56. |