3.4 .Задание 4
в диапазоне изменение от 0 до 5 с шагом 0.5.
При решении данной задачи используем алгоритмы циклической структуры "до" и "пока". Параметром данного цикла является х, причем при каждом повторном вычислении его значение следует увеличивать на величину шага.
Объявим переменную х в разделе объявлений вещественного типа и зададим в программе ей начальное значение равное 0. В процессе вычислений значение переменной будет изменяться с заданным шагом 0,5.
Для вычисления y при х1 будем использовать алгоритмическую структуру "цикл-до", а при вычислении функции в диапазоне 0<x<3 – "цикл-пока".
Блок-схема одного из вариантов алгоритма решения задачи приведена на рис.4. Как видно, программно алгоритм можно описать с помощью условных операторов. Но мы будем использовать специальные средства языка, реализующие циклические структуры.
С учетом сказанного, программа, соответствующая представленному алгоритму будет иметь вид:
Начало
Ввод
х:=0
конец
x:=x+0.5
t:=b*Sqr(Sin(x)/Cos(x))
x>0
x:=x+0.5
Вывод
t
t:=
ln(2)*(x+a)
Рис. 4. Блок-схема алгоритма задачи 4
ENDIF}{$ENDIF}
Результаты работы
программы:
Tabl ----------------------- |
x= 0.00 |t=
1.14 | ----------------------- |
x= 0.50 | t=
1.4914 | ----------------------- |
x= 1.00 | t=
12.13
| ----------------------- |
x= 1.50 | t=
994.25
| ----------------------- |
x= 2.00 | t=
23.87
| ----------------------- |
x= 2.50 | t=
2.79
| -----------------------
{ you can add units after this };
var t,x,a,b:real;
begin
x:=0;
writeln(' Tabl ');
writeln('|x=',x:6:2,'|t=',t:6:2,'|');
writeln('--------------------');
repeat
a:=1.65;
t:= ln(2)*(x+a);
writeln('| x=',x:6:2, ' | t=',t:6:2, ' |');
writeln('--------------------');
x:=0.5;
until x>0;
while x<3 do
begin
b:=5;
t:=b*Sqr(Sin(x)/Cos(x));
writeln('|x=',x:6:2,'|t=',t:6:2,'|');
writeln('--------------------');
x:=x+0.5;
end;
readln
end.
3.5 .Задание 5
program Zadacha5;
{$mode objfpc}{$H+}
uses
Classes, SysUtils
{ you can add units after this };
const n=20;
var i, Imin :byte;
Xmin : real; // наименшийший элемент
x : array[1.. n] of real;
begin
for i :=1 to n do
begin
write( 'vvedite ', i, ' element massive x' );
readln(x [i ]); //ввод элемента массива Х
end;
Xmin := x[1]; //кандидат в Хmin
Imin :=1; //его номер Imin
for i :=2 to n do if x[i] > Xmin then
begin //поиск Хmin
Xmin:=x[i];
Imin:=i;
end;
writeln;
writeln('Xmin=', Xmin:6:2, ' Imin=', Imin);
readln //вывод результата
end.
Результат:
vvedite 1 element massive x 2
vvedite 2 element massive x -8
vvedite 3 element massive x 6
vvedite 4 element massive x -10
vvedite 5 element massive x 6
vvedite 6 element massive x 4
vvedite 7 element massive x -7
vvedite 8 element massive x 3
vvedite 9 element massive x 5
vvedite 10 element massive x -8
Xmin= 6.00 Imin
Вывод по работе
При выполнении контрольной работы было выполнено 5 заданий.
По заданиям были составлены блок-схемы для каждого из них.
В процессе выполнения задания было усвоено линейное программирование, разветвляющиеся алгоритмы, алгоритмы в которых используя оператор fo… to…do, операторы while…do и repeat… until,и работа с массивами