Методика выполнения работы 1. программа имеет линейную структуру в соответствии с алгоритмом на рис. 5.2. s1 – блок ввода исходных данёных a, b, c. s2 – блоки расчета полупериметра треугольника p и площади s. s3 – блок вывода результата: площадь s. введите программу решения этой (см. пп. 1-3, лабораторная работа № 1). program geron; uses crt; var a,b,c,p,s: real; begin clrscr; {ввод исходных данных} writeln(‘введите значения сторон треугольника a,b,c’); readln(a,b,c); {расчет полупериметра и площади треугольника} p: = 0.5*(a+b+c); s: =sqrt(p*(p-a)*(p-b)*(p-c)); {вывод результата расчета} writeln(‘площадь треугольника = ’, s: 5: 3) end. 2. откомпилируйте программу и исправьте возможные ошибки. затем запустите программу на счет (см. пп. 4-5, лабораторная работа № 1). 3. проведите тестовый расчет, чтобы убедиться в правильности работы программы. введите значения сторон: a=1, b=1, c=1. должен получиться результат s=0.433. 4. проведите серию расчетов для различных значений сторон треугольника. 5. если значения сторон являются константами (например, все равны 1), то в данную программу можно ввести следующие изменения: перед разделом var надо добавить раздел констант – const a=1; b=1; c=1; из раздела var убрать a,b,c – var p,s: real; убрать ввод исходных данных – удалить операторы writeln(‘введите…’); readln(a,b,c); 6. сделайте указанные исправления и повторите пп. 1-3 данной работы. для самостоятельной работы составить программу на языке паскаль для нахождения значения выражения. константы a, b, c вводятся с клавиатуры. сложные аргументы функций вычислять отдельно, tan(x) вычислять как sin(x)/cos(x), ctan(x) → cos(x)/sin(x), xy → exp(y*ln(
// Внимание! Если программа не работает, обновите версию!
begin
var n:=ReadInteger('Количество строк (столбцов) в массиве:');
Writeln('*** Исходный массив ***');
var a:=MatrRandom(n,n,10,30);
a.Println(3); Writeln(3*a.ColCount*'-');
Write('Строки с повторяющимися элементами: ');
var (i,k):=(0,0);
foreach var строка in a.Rows do begin
i+=1;
if строка.Count<>строка.Distinct.Count then begin
k+=1; Print(i)
end
end;
if k=0 then Writeln('нет')
else Writeln;
Write('Столбцы с повторяющимися элементами: ');
(i,k):=(0,0);
foreach var столбец in a.Cols do begin
i+=1;
if столбец.Count<>столбец.Distinct.Count then begin
k+=1; Print(i)
end
end;
if k=0 then Writeln('нет')
else Writeln
end.
Пример
Количество строк (столбцов) в массиве: 6
*** Исходный массив ***
30 16 23 17 19 27
18 13 21 19 21 11
30 10 24 27 22 20
19 28 15 29 15 18
11 30 22 25 21 15
27 14 27 28 18 28
Строки с повторяющимися элементами: 2 4 6
Столбцы с повторяющимися элементами: 1 5
1) [0; 3]
x=0
0∉A + 0∈[ 2;10] +0∈[6;11]≠1 ( данный отрезок не является решением)
2) [3;11]
x=3
x∉A+3∈[2; 10] + 3∈[6;11]=1
x=11
x∉A+11∈[2;10]+11∈[6;11]=1
вывод: на концах отрезка [3;11] данная формула имеет значение "истина", значит и любая точка этого отрезка даст значение "истина" данной формуле.
ответ 2)
(аналогично, подставляя концы отрезков 3) и 4) , можно удостовериться, что они не дадут данной формуле значение "истина" )