S = 0.5ah
h/c = sin(β) → β = arcsin(h/c)
Периметр P=a+b+c
По теореме косинусов b² = a² + c² - 2ac cos(β) и можно найти третью сторону b.
А дальше используем теорему синусов:
a/sin(α) = /sin(β) = c/sin(γ) и отсюда находим углы α и γ, зная b/sin(β).
<span><em>// PascalABC.NET 3.3, сборка 1634 от 14.02.2018</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
</span><span>begin
var (a,c,h):=ReadReal3('Введите стороны a, c и высоту h:');
var S:=0.5*h*c;
var beta:=ArcSin(h/a);
var b:=Sqrt(a*a+c*c-2*a*c*Cos(beta));
var P:=a+b+c;
var k:=b/Sin(beta);
var (alpha,gamma):=(ArcSin(a/k),ArcSin(c/k));
Writeln('b=',b:0:5,', alpha=',RadTodeg(alpha):0:3,
', beta=',RadtoDeg(beta):0:3,', gamma=',RadtoDeg(gamma):0:3,
', P=',P:0:5,', S=',S:0:5)
end.</span>
<u>Пример</u>
Введите стороны a, c и высоту h: 5 6.5 4
b=5.31507, alpha=48.814, beta=53.130, gamma=78.056, P=16.81507, S=13.00000
Отлично видно, что 011 вначале и в конце слова ОкнО, следовательно 011=О. Отсюда остаток делим пополам и 01=К, 10=Н. Условие, ч<span>то коды согласных и гласных букв имеют разную длину, выполняется. Отсюда 011=О, 10=н, 011=О, полученное слово - ОНО</span>
1.
var a, b: integer;
begin
read(a,b);
if (a + b = 0) then writeln('Да') else writeln('Нет');
end.
2.
var num :integer;
begin
read(num);
if (num < 5) then writeln('меньше 5');
end.
3.
var num :integer;
begin
read(num);
if (num = 7) then writeln('Воскресенье');
end.
4.
var a,b,c :integer;
begin
read(a,b,c);
if (a * b * c = 0) then writeln('один равен 0');
end.
5.
var a,b :integer;
begin
read(a, b);
if (a - b = 0) then writeln ('они равны');
end.
<em>ВАЖНО!</em> Прикрепленные файлы на самом деле не текстовые, а двоичные, но таковые данная система не позволяет прикрепить. Поэтому не стоит пытаться эти файлы читать.
<u>Для работы программы следует переименовать файлы в file1.bin и file2.bin</u>
<u>Содержимое файла f1</u>
7696 163 67
9195 183 71
1922 174 77
4586 173 68
4611 164 64
4204 164 60
8914 178 62
1102 162 63
4947 184 63
6185 174 79
<u>Содержимое файла f2</u>
4611 287 4
1102 312 3
9195 220 12
3142 251 7
8914 229 9
7696 252 7
1922 245 5
4204 273 6
4586 241 10
<em>// PascalABC.NET 3.3, сборка 1573 от 04.11.2017</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
type
st1=record
номер:integer;
рост:integer;
вес:integer
end;
st2=record
номер:integer;
время_бега:integer;
кол_подтягиваний:integer
end;
st3=record
номер:integer;
рост:integer;
вес:integer;
время_бега:integer;
кол_подтягиваний:integer
end;
begin
// считываем файл f1 в массив типа st1
var f1:file of st1;
Assign(f1,'file1.bin'); Reset(f1);
var n1:=FileSize(f1);
var m1:=new st1[n1];
for var i:=0 to n1-1 do Read(f1,m1[i]);
f1.Close;
// читаем файл f2 и для каждой записи ищем элемент массива
// с таким же номером. Если найден - делаем слияние в файл f3
var f2:file of st2;
Assign(f2,'file2.bin'); Reset(f2);
var buf2:st2; // буфер для чтения f2
var f3:file of st3;
Assign(f3,'file3.bin'); Rewrite(f3);
var buf3:st3; // буфер для записи f3
while not Eof(f2) do begin
Read(f2,buf2);
var j:=m1.FindIndex(t->t.номер=buf2.номер);
if j<>-1 then begin
buf3.номер:=buf2.номер;
buf3.рост:=m1[j].рост;
buf3.вес:=m1[j].вес;
buf3.время_бега:=buf2.время_бега;
buf3.кол_подтягиваний:=buf2.кол_подтягиваний;
Write(f3,buf3)
end
end;
f2.Close;
// посмотрим, что получилось в f3
Seek(f3,0);
while not Eof(f3) do begin
Read(f3,buf3); Print(buf3)
end;
f3.Close
end.
<u>Пример работы программы</u>
(4611,164,64,287,4) (1102,162,63,312,3) (9195,183,71,220,12) (8914,178,62,229,9) (7696,163,67,252,7) (1922,174,77,245,5) (4204,164,60,273,6) (4586,173,68,241,10)