1) Перед вами программа к задаче «Вводить пары чисел, пока первое
число больше второго».
Var a, b: integer;
Begin
While a>b do begin
writeln('введите пару чисел"); readln(a,b);
end;
Write('условие нарушилось");
end.
Найдите ошибку в программе и исправьте ее.
{
double a = float.Parse(Console.ReadLine()),
b = float.Parse(Console.ReadLine()),
c = float.Parse(Console.ReadLine()),
d;
if (a > b) swap(ref a, ref b);
if (b > c) swap(ref c, ref b);
if (a > b) swap(ref a, ref b);
if (b > c) swap(ref c, ref b);
d = Math.Sqrt(Math.Pow(a, 2) + Math.Pow(b, 2));
if (a + b <= c)
{
Console.WriteLine("Нет ▲");
}
else
{
if (d == c)
Console.WriteLine("Прямоугольный");
else
if (d < c)
Console.WriteLine("Тупоугольный");
else
Console.WriteLine("Остроугольный");
}
Console.ReadKey(false);
}
private static void swap(ref double a, ref double b)
{
double c = a;
a = b;
b = c;
}
var
c, s: string;
iquo, irem: integer;
begin
s := '';
iquo := n;
while iquo <> 0 do
begin
irem := iquo mod 8;
iquo := iquo div 8;
Str(irem, c);
s := c + s
end;
if Length(s) = 0 then Result := '0'
else Result := s
end;
var
m: array[1..8] of integer;
i: integer;
begin
Randomize;
for i := 1 to 8 do
begin
m[i] := Random(10000);
writeln(m[i]:5, '(10)=', Dec2Oct(m[i]), '(8)')
end
end.
Тестовое решение:
973(10)=1715(8)
7245(10)=16115(8)
2511(10)=4717(8)
5136(10)=12020(8)
8002(10)=17502(8)
7101(10)=15675(8)
4277(10)=10265(8)
5916(10)=13434(8)
Если вместо функции нужна процедура, достаточно заменить несколько строчек.
procedure Dec2Oct(n: integer; s: string);
var
c: string;
iquo, irem: integer;
begin
s := '';
iquo := n;
while iquo <> 0 do
begin
irem := iquo mod 8;
iquo := iquo div 8;
Str(irem, c);
s := c + s
end;
if Length(s) = 0 then s := '0'
end;