Python
from random import randint
n=int(input('Введите размер массива: '))
a=[0]*n
b=0
for i in range(0, n-1):
a[i]=randint(0, 1000)
# это часть для замены функции getH
c=a[i]
if a[i]>=100: c=a[i]//100
elif a[i]>10: c=a[i]//10
# конец определения первой цифры
if c==8:
b+=1
print(a)
print('Элементов начинающихся с 8 =',b)
# задание 2
# это вместо sorted.
i=1
while i<n:
if a[i]<a[i-1]:
z=a[i-1]
a[i-1]=a[i]
a[i]=z
if i>1:
i-=1
else: i+=1
# конец сортировки
b=1
print('3 минимальных элемента')
print(a[0])
while b<3 and b<n:
if a[i]!=a[i-1]:
print(a[i])
i+=1
Объяснение:
Есть ошибки. Не будет компилироваться. Будет ошибка выполнения в первой программе для отрицательных значений x.
Жирным выделены строчки, где есть ошибки.
1) Описание переменных следует писать так
Var x, y: real;
2) Пропущена точка с запятой
y:= sqrt(x);
3) Корень с отрицательного числа
y:= sqrt(x)
4) Во второй программе в объявлении переменных
5) Пропущены знаки операций
y :=3 * x / (8 - x)
6) во второй программе, если знаменатель == 0, то после вывода - решений нет, следует вывод не инициализированного значения у.
Вывод значения y надо перенести выше, после вычисления y.
Program nl;
Var: x,y; real;
Begin
Readln (x);
if x >= 0 then
y:= x*x
Else
Writeln(y);
End.
Var: x,y;real;
Readln(x);
if (8-x)<>0 then
y:=3x/8-x
Writeln('решений нет');
Так лучше будет (по возможности исправлено)
{ Тело первой программы }
Write ('Input x: ');
y := x * x
y := sqrt(abs(x));
Writeln('y: ', y: 10: 3);
Readln(); // удерживаем консоль
{ Тело второй программы }
if (8-x) <> 0 then
bеgin
y:=3*x/(8-x);
Writeln(' y=', y: 10: 2);
end
Python
from random import randint
n=int(input('Введите размер массива: '))
a=[0]*n
b=0
for i in range(0, n-1):
a[i]=randint(0, 1000)
# это часть для замены функции getH
c=a[i]
if a[i]>=100: c=a[i]//100
elif a[i]>10: c=a[i]//10
# конец определения первой цифры
if c==8:
b+=1
print(a)
print('Элементов начинающихся с 8 =',b)
# задание 2
# это вместо sorted.
i=1
while i<n:
if a[i]<a[i-1]:
z=a[i-1]
a[i-1]=a[i]
a[i]=z
if i>1:
i-=1
else: i+=1
# конец сортировки
i=1
b=1
print('3 минимальных элемента')
print(a[0])
while b<3 and b<n:
if a[i]!=a[i-1]:
print(a[i])
b+=1
i+=1
Объяснение:
Есть ошибки. Не будет компилироваться. Будет ошибка выполнения в первой программе для отрицательных значений x.
Жирным выделены строчки, где есть ошибки.
1) Описание переменных следует писать так
Var x, y: real;
2) Пропущена точка с запятой
y:= sqrt(x);
3) Корень с отрицательного числа
y:= sqrt(x)
4) Во второй программе в объявлении переменных
Var x, y: real;
5) Пропущены знаки операций
y :=3 * x / (8 - x)
6) во второй программе, если знаменатель == 0, то после вывода - решений нет, следует вывод не инициализированного значения у.
Вывод значения y надо перенести выше, после вычисления y.
Program nl;
Var: x,y; real;
Begin
Readln (x);
if x >= 0 then
y:= x*x
Else
y:= sqrt(x)
Writeln(y);
End.
Program nl;
Var: x,y;real;
Begin
Readln(x);
if (8-x)<>0 then
y:=3x/8-x
Else
Writeln('решений нет');
Writeln(y);
End.
Так лучше будет (по возможности исправлено)
{ Тело первой программы }
Var x, y: real;
Begin
Write ('Input x: ');
Readln(x);
if x >= 0 then
y := x * x
Else
y := sqrt(abs(x));
Writeln('y: ', y: 10: 3);
Readln(); // удерживаем консоль
End.
{ Тело второй программы }
Var x, y: real;
Begin
Write ('Input x: ');
Readln(x);
if (8-x) <> 0 then
bеgin
y:=3*x/(8-x);
Writeln(' y=', y: 10: 2);
end
Else
Writeln('решений нет');
Readln(); // удерживаем консоль
End.