Консультация № 197668
30.01.2020, 17:08
0.00 руб.
0 2 1
Здравствуйте! У меня возникли сложности с таким вопросом:

const k=100;
type arr=array[1..k] of integer;
procedure gen(i:integer; const k: integer; var x: arr);
begin
if i <= k
then begin
x[i] := random(100);
write(x[i]:3);
gen(i + 1, k, x)
end
else writeln
end;

procedure rprn(k:integer;n:integer;var x:arr);
//k-индекс хлемента, n-до куда делать реверс, x=массив
var c:integer;
begin
if k=1 then
begin
c:=x[1];
x[1]:=x[n];
x[n]:=c;
end;
if k<=n div 2 then rprn(k+1,n,x);
end;

var a: arr;
n,b,r: integer;
begin
repeat
write('Введите кол-во элементов от 10 до 100 n=');
readln(n);
until n in [10..100];
repeat
write('Введите число элементов для инвертирования от 2 до ',n-1,' b=');
readln(b);
until b in [2..n-1];
randomize;
gen(1,n,a);
rprn(1,b,a);
writeln('Инвертирование элементов c первого по номер ',b);
for b:=1 to n do
write(a[b]:3);
writeln;
r:=1;
for b:=2 to n do
if a[b]<=a[r] then r:=b;
write('Номер последнего минимального элемента=',r,' его значение=',a[r]);
end.

Приложение:
const k=100;
type arr=array[1..k] of integer;
procedure gen(i:integer; const k: integer; var x: arr);
begin
if i <= k
then begin
x[i] := random(100);
write(x[i]:3);
gen(i + 1, k, x)
end
else writeln
end;

procedure rprn(k:integer;n:integer;var x:arr);
//k-индекс хлемента, n-до куда делать реверс, x=массив
var c:integer;
begin
if k=1 then
begin
c:=x[1];
x[1]:=x[n];
x[n]:=c;
end;
if k<=n div 2 then rprn(k+1,n,x);
end;

var a: arr;
n,b,r: integer;
begin
repeat
write('Введите кол-во элементов от 10 до 100 n=');
readln(n);
until n in [10..100];
repeat
write('Введите число элементов для инвертирования от 2 до ',n-1,' b=');
readln(b);
until b in [2..n-1];
randomize;
gen(1,n,a);
rprn(1,b,a);
writeln('Инвертирование элементов c первого по номер ',b);
for b:=1 to n do
write(a[b]:3);
writeln;
r:=1;
for b:=2 to n do
if a[b]<=a[r] then r:=b;
write('Номер последнего минимального элемента=',r,' его значение=',a[r]);
end.

Обсуждение

в сети
Управляющий
143894
2148
30.01.2020, 20:40
общий
Адресаты:
А в чем суть самого вопроса?
Об авторе:
Устав – есть устав! Если ты устав – то отдыхай!


давно
Профессор
401888
1232
31.01.2020, 08:48
общий
это ответ
Здравствуйте, maatvey2015@gmail.com!
У Вас видимо неправильно написана процедура rprn.
Нужно так.
[code lang=pascal]procedure rprn(k:integer;n:integer;var x:arr);
//k-индекс элемента, n-до куда делать реверс, x=массив
var c:integer;
begin
c:=x[k];
x[k]:=x[n-k+1];
x[n-k+1]:=c;
end;
if k<=n div 2 then rprn(k+1,n,x);
end;[/code]
И ввод данных нужно поменять, чтобы можно было делать реверс от 1 до n.
[code lang=pascal]repeat
write('Введите число элементов для инвертирования от 2 до ',n,' b=');
readln(b);
until b in [2..n];[/code]
Форма ответа