В вашей деревне всего 9 домов. С номерами от 1 до 9. Председатель деревни вписывал номера домов в электронную документацию и не поставил между ними пробелы. Петух склевал клавишу пробела у него на компуктере :( Получилось одно гигантское девятизначное число.
Напишите программу, которая напечатает номер каждого дома в отдельной строке (начните с цифры единиц исходного числа).
Формат входных данных
Девятизначное целое число.
Формат выходных данных
Все цифры числа, начиная с единиц, каждое в отдельной строке.
var
dd, s: real;
d, m: integer;
begin
dd := 180 * r / Pi;
d := Trunc(dd);
dd := 60 * (dd - d);
m := Trunc(dd);
s := 60 * (dd - m);
Writeln('=', d, ' град ', m, ' мин ', s:0:2, ' сек')
end;
var
a, b, c, dd: real;
begin
Write('Введите через пробел стороны треугольника a,b,c: ');
Readln(a, b, c);
Writeln('Значения углов треугольника');
Write('А');
dd := ArcCos((sqr(b) + sqr(c) - sqr(a)) / (2 * b * c));
WriteDMS(dd);
Write('B');
dd := ArcCos((sqr(a) + sqr(c) - sqr(b)) / (2 * a * c));
WriteDMS(dd);
Write('C');
dd := ArcCos((sqr(a) + sqr(b) - sqr(c)) / (2 * a * b));
WriteDMS(dd);
end.
Тестовое решение:
Введите через пробел стороны треугольника a,b,c: 5.8 3.2 4.9
Значения углов треугольника
А=88 град 53 мин 7.58 сек
B=33 град 28 мин 41.54 сек
C=57 град 38 мин 10.88 сек
Во вложениях даны тестовые файлы.
const
n1 = 20;
type
r5 = record
value: byte; {Значение элемента}
right: boolean; {Есть ли единица справа?}
down: boolean; {Есть ли единица ниже?}
left: boolean; {Есть ли единица слева?}
viewed: boolean {Элемент просмотрен?}
end;
var
n, i, j, k: integer;
m: array[1..n1, 1..n1] of r5;
fin, fout: Text;
procedure Mark(i: integer; j: integer);
{рекурсивная процедура, отыскивающая весь островок и помечающая его}
begin
if not m[i, j].viewed then
begin
m[i, j].viewed := true;
if m[i, j].right then Mark(i, j + 1);
if m[i, j].down then Mark(i + 1, j);
if m[i, j].left then Mark(i, j - 1)
end
end;
begin
Assign(fin, 'Input.txt');
Reset(fin);
{Инициализация из файла}
Readln(fin, n);
for i := 1 to n do
for j := 1 to n do
Read(fin, m[i, j].value);
Close(fin);
{Определение соседей}
for i := 1 to n do
for j := 1 to n do
begin
if m[i, j].value = 1 then begin
if j < n then m[i, j].right := (m[i, j + 1].value = 1) else m[i, j].right := false;
if i < n then m[i, j].down := (m[i + 1, j].value = 1) else m[i, j].down := false;
if j > 1 then m[i, j].left := (m[i, j - 1].value = 1) else m[i, j].left := false
end;
m[i, j].viewed := false
end;
{Подсчет "островков"}
k := 0;
for i := 1 to n do
for j := 1 to n do
begin
with m[i, j] do
begin
if (m[i, j].value = 1) and (not m[i, j].viewed) then begin
k := k + 1;
Mark(i, j)
end
end
end;
Assign(fout, 'Output.txt');
Rewrite(fout);
Writeln(fout, k);
Close(fout)
end.