- •Министерство образования и науки республики казахстан
- •Оглавление
- •Введение
- •Задание №1. Линейные алгоритмы.
- •1.1.5. Постановка задачи
- •1.3.2. Постановка задачи
- •1.3.3. Описание алгоритма решения задачи
- •1.3.4. Описание входных и выходных данных
- •1.3.5. Листинг программы
- •Задание №2. Разветвляющиеся алгоритмы
- •3.5. Постановка задачи
- •Задание №6. Биоритмы
- •6.1. Постановка задачи
- •6.2. Описание входных и выходных данных
- •6.3. Листинг программы
- •Заключение
- •Список литературы
3.5. Постановка задачи
Цель работы: Дано целое положительное число n. Вычислить . n! =... 3! 2!...
3.6. Описание алгоритма решения задачи
начало
N;
X=1; Y=2;
x:=x+1/y;
Y=y+1;
нет y>n+1; да
X;
Конец
3.7. Описание входных и выходных данных
x –результат вычисления выражения типа real.
n–количество повторений цикла, вводимая пользователем.
3.8. Листинг программы
procedure TForm1.Button1Click(Sender: TObject);
var
x,y,n:real;
begin
n:=strtofloat(edit1.text);
x:=1;
y:=2 ;
while y<n+1 do
begin
x:=x+1/y;
y:=y+1;
end;
edit2.text:=floattostrf(x,ffgeneral,1,1);
end;
end.
Задание №4. Массивы
4.1. Постановка задачи
Цель работы: Задан массив А(n). Расположить его элементы в обратном порядке.
4.2. Описание алгоритма решения задачи
n начало
I>n нет
да
M[I]=round(sin(random(100)*100)
M[I]
y>n+1
нет
да
M[I]
Конец
4.3. Описание входных и выходных данных
N - количество элементов массива.
M – массив
4.4. Листинг программы
var
Form1: TForm1;
N,I: integer;
M: array of integer;
procedure TForm1.Edit1Change(Sender: TObject;Var key:Char);
begin
if not (key in['0'..'9'])then key:=#0
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Randomize;
n:=StrToInt(Edit1.Text);
SetLength(m,n);
Edit2.Text:=' ';
for I:=0 to n-1 do
begin
m[I]:=Round(Sin(Random(100))*100);
Edit2.Text:=Edit2.Text+' '+IntToStr(m[I]);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Edit3.Text:=' ';
for i:=n-1 downto 0 do
begin
Edit3.Text:=Edit3.text+' '+IntToStr(m[I]);
end;
end;
end.
Задание №6. Биоритмы
6.1. Постановка задачи
Цель работы: Расчет биоритмов на декабрь 2013 январь 2014.
6.2. Описание входных и выходных данных
N - количество элементов массива.
M – массив
6.3. Листинг программы
var
Form1: TForm1;
Xmin,Xmax,Ymid,m1,y1:integer;
dxy:integer=5;
days:array [1..12] of byte=
(30,28,31,30,31,30,31,31,30,31,30,31);
implementation
{$R *.dfm}
procedure TForm1.Axis;
{Построение и маркировка осей}
var
j,x:integer;
begin
{Очистка поля графика}
Img1.Canvas.FillRect(Rect(0,0,Img1.Width,Img1.Height));
{Построение оси y}
Img1.Canvas.MoveTo(dxy,dxy);
Img1.Canvas.LineTo(dxy,2*Ymid-dxy);
{Построение оси x}
Img1.Canvas.MoveTo(dxy, Ymid);
Img1.Canvas.LineTo(Xmax+dxy,Ymid);
{Цикл нанесения штрихов по оси x}
for j:=1 to days[m1] do
begin
x:=Xmin + j*Xmax div 31; {Координата очередного штриха}
if (j mod 5) <> 0 then {Если штрих - обычный}
begin
{Построение короткого штриха}
Img1.Canvas.MoveTo(X,Ymid-dxy);
Img1.Canvas.LineTo(X,Ymid+dxy);
end
else {Если штрих - удлиненный, с маркировкой}
begin
{Построение удлиненного штриха}
Img1.Canvas.MoveTo(X,Ymid-dxy*2);
Img1.Canvas.LineTo(X,Ymid+dxy*2);
{Коррекция позиции начала маркировки и нанесение маркера}
Img1.Canvas.TextOut(X-dxy,Ymid+dxy*2,IntToStr(j));
end;
end;
end;
procedure TForm1.Graphic(T:integer;Dfi:integer; col:TColor);
{Построение графика}
var
x,y,j:integer;
begin
Img1.Canvas.Pen.Color:=col;
x:=Xmin; {Начальная точка графика}
y:=round(Ymid*(1-0.9*Sin(2*Pi*Dfi/T)));
{Отображение начальной точки}
Img1.Canvas.MoveTo(x,y);
{Цикл вычисления координат кривой в каждый день месяца}
for j:=1 to days[m1] do
begin
x:=Xmin + j * Xmax div 31;
y:=round(Ymid*(1-0.9*Sin(2*Pi*(j+Dfi)/T)));
{Построение очередного звена синусоиды}
Img1.Canvas.LineTo(x,y);
end;
end;
procedure TForm1.Btn1Click(Sender: TObject);
{Выполнение команды "Построить"}
var
dd:integer;
begin
{ dxy:=5;}
Xmin:=dxy;
Xmax:=Img1.Width-2*dxy;
Ymid:=Img1.Height div 2;
m1:=MonthOf(DtP2.Date); {Месяц графика}
y1:=YearOf(DtP2.Date); {Год графика}
if (y1 mod 4)=0 then days[2]:=29;
{Коррекция дня в начальной дате графика}
DtP2.Date:=EncodeDate(y1,m1,1);
if (YearOf(DTP2.Date) mod 4)=0 then days[2]:=29;
{Построение и маркировка осей}
Axis;
{Определение числа дней, прошедших от момента рождения}
dd:=DaysBetween(DTP2.Date,DTP1.Date);
{Построение кривой физического состояния}
Graphic(23,dd mod 23,clRed);
{Построение кривой интеллектуального состояния}
Graphic(28,dd mod 28,clGreen);
{Построение кривой эмоционального состояния}
Graphic(33,dd mod 33,clBlue);
end;
end.