Отображение ломанной
procedure TForm1.Button3Click(Sender: TObject);
var i:integer;
var NextPoint:TPoint; //текущая точка звена ломанной
begin
NextPoint := PointArray[0];
Image1.Canvas.MoveTo(round(NextPoint.x) + round(Center.x),
round(NextPoint.y) + round(Center.y));
//проходим по всем точкам ломанной
for i:=1 to High(PointArray) do
begin
NextPoint := PointArray[i];
Image1.Canvas.LineTo(round(NextPoint.x) + round(Center.x),
round(NextPoint.y) + round(Center.y));
end;
end;
Вариант 2.
Комплексное число
Вспомните, что собой представляет комплексное число:
Z=X+iY где X- действительная часть,
Y – мнимая.
Задания:
- создать функцию для сложения (вычитания) двух комплексных чисел;
- создать функции для умножения (деления) двух комплексных чисел;
- находить аргумент и модуль комплексного числа
Вариант 3.
Информация о студенте
Информацию о студенте можно представить как совокупность определенных данных: фамилия, имя, отчество, 4 оценки результатов сессии.
Задания:
Осуществить ввод данных о нескольких студентах. Запоминать данные в динамический массив.
1) отсортировать по алфавиту введенный массив студентов (критерий сортировки поле фамилия)
2) показать всех студентов, у которых в фамилии встречается введенная комбинация символов
3) вывести всех студентов кто не сдал сессию
4) вывести всех студентов, чей средний бал за сессию выше 4
Примерный вид интерфейса и некоторые решения поставленных задач:
Вносим данные, запоминаем их в массив для последующей обработки, выводим внесенных студентов в StringGrid
implementation
{$R *.dfm}
//описываем тип данных для хранения информации о студенте
type
Student = record
F,I,O : String[20];
Ekz1,Ekz2,Ekz3,Ekz4:byte;
end;
//создаем пустой динамический массив данных о студентах
var
StudentArray: array of Student;
procedure TForm1.Button1Click(Sender: TObject);
var NextStudent:Student; //очередной введенный студент
LastRow:Integer; //номер предпоследней строки StringGrid-а
begin
//работа с переменной типа запись
with NextStudent do
begin
F := Edit1.Text;
I := Edit2.Text;
O := Edit3.Text;
Ekz1 := StrToInt(Edit4.Text);
Ekz2 := StrToInt(Edit5.Text);
Ekz3 := StrToInt(Edit6.Text);
Ekz4 := StrToInt(Edit7.Text);
end;
//запоминаем данные в последний элемент массива
SetLength(StudentArray, Length(StudentArray)+1);
StudentArray[High(StudentArray)] := NextStudent;
//выводим последние введенные данные в конец StringGrid-а
LastRow := StringGrid1.RowCount - 1;
with NextStudent do
begin
StringGrid1.Cells[0,LastRow]:=
IntToStr(Length(StudentArray));
StringGrid1.Cells[1,LastRow] := F;
StringGrid1.Cells[2,LastRow] := I;
StringGrid1.Cells[3,LastRow] := O;
StringGrid1.Cells[4,LastRow] := IntToStr(Ekz1);
StringGrid1.Cells[5,LastRow] := IntToStr(Ekz2);
StringGrid1.Cells[6,LastRow] := IntToStr(Ekz3);
StringGrid1.Cells[7,LastRow] := IntToStr(Ekz4);
end;
//увеличиваем кол-во строк
StringGrid1.RowCount := StringGrid1.RowCount + 1;
//очищаем поля ввода
Edit1.Text := '';
Edit2.Text := '';
Edit3.Text := '';
Edit4.Text := '';
Edit5.Text := '';
Edit6.Text := '';
Edit7.Text := '';
end;
Вариант 4.
Дата
Представим данные о дате в следующем виде:
TDateRec = record
Year: Integer;
Month: (Jan, Feb, Mar, Apr, May, Jun,
Jul, Aug, Sep, Oct, Nov, Dec);
Day: 1..31;
end;
Задания:
Осуществить на форме ввод дат в указанном формате и решить поставленные задачи:
- найти количество дней прошедших между двумя датами;
- определить сколько дней осталось до нового года;
- днем программиста считается 256 день с начала года. Определить когда будет празднование этого дня в 2008 году.
Функции для работы с датой и временем:
В Delphi для хранения даты и (или) времени предусмотрен формат TDateTime, представляющий собой, на самом деле, обычное число с плавающей точкой. При этом дата представляется целой частью числа, а время дробной. Преимущество этого подхода в том, что теперь даты и времена можно корректно складывать и вычитать, например:
var
StartTime: tDateTime;
procedure TForm1.FormCreate(Sender: TObject); begin StartTime := Now; // Now – стандартная функция, возвращает текущую дату и время end;
procedure TForm1.FormClick(Sender: TObject); begin Labell.Caption := 'Co времени запуска прошло' +
DateTimeToStr(Now - StartTime);
end;
Функции для работы с датой и временем приведены в таблице:
function EncodeDate(Year, Month, Day: Word): TDateTime; |
Преобразует дату, заданную раздельно годом, месяцем и днем, в формат TDateTime. Если они выходят за допустимые пределы, возникает ИС EConvertError. |
procedure DecodeDate(Date: TDateTime; var Year, Month, Day: Word) ; |
Преобразует дату в виде TDateTime к раздельным составляющим: году, месяцу и дню. |
function EncodeTime(Hour, Min, Sec, MSec: Word); TDateTime; |
Преобразует значение времени, заданное часом, минутой, секундой и миллисекундой в формат TDateTime. |
procedure DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word) ; |
Преобразует значение времени в формате TDateTime в раздельные составляющие: час, минуту, секунду и миллисекунду. |
function DayOfWeek(Date: TDateTime): Integer; |
Возвращает номер текущего дня недели от 1 (воскресенье) до 7 (суббота). |
function Date: TDateTime; |
Возвращает текущую дату. |
function Time: TDateTime; |
Возвращает текущее время. |
function Now: TDateTime; |
Возвращает текущие дату и время. |
function DateToStr(Date: TDateTime): string; |
Преобразует дату Date в текстовую строку. |
function TimeToStr(Time: TDateTime): string; |
Преобразует время из типа TDateTime в текстовую строку. |
function DateTimeToStr (DateTime: TDateTime): string; |
Преобразует дату и время из типа TDateTime в текстовую строку. |
function StrToDate (const S: string): TDateTime; |
Преобразует текстовую строку в дату типа TDateTime. Строка должна содержать два или три числа, разделенных символом, содержащимся в DateSeparator. Формат даты в строке определяется в соответствии со значением переменной ShortDateFormat. |
function StrToTime(const S: string): TDateTime; |
Преобразует текстовую строку S в значение времени. Должен использоваться формат HH:NN:SS, где SS может принимать значения 'AM' или PМ', иначе означает секунды. Если необходимо получать время в 24-х часовой шкале, то элемент SS формата опускается. Если преобразование невозможно, возникает ИС EConvertError. |
function StrToDateTime (const S: string): TDateTime; |
Преобразует текстовую строку S в дату и время в формате MM/DD/YY HH:NN:SS (элемент SS см. выше). |
function FormatDateTime (const Format: string; DateTime: TDateTime): string; |
Преобразует дату и время из типа TDateTime в текстовую строку, используя формат, задаваемый параметром Format (см. Примечание 1). |
procedure DateTimeToString (var Result: string; const Format: string; DateTime: TDateTime); |
Преобразует дату и время типа TDateTime в строку Result, используя формат, передаваемый параметром Format (см.примечание 1). |
