Форум по 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,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну, типа:
Код:
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  
Старый 14.02.2017, 21:27
vincentblake vincentblake вне форума
Прохожий
 
Регистрация: 31.01.2017
Сообщения: 8
Версия Delphi: Depli 7
Репутация: 10
По умолчанию

попробовал использовать ,но что-то ничего не происходит,не выводит сообщение,можешь подсказать что куда правильно распихать?
Код:
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,004
Версия 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,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну, например, так что-ли...
Код:
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, время: 02:57.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter