Помогите с задачками по информатике! Задачи на паскале и с функцией, либо процедурой
Помогите с задачками по информатике! Задачи на паскале и с функцией, либо процедурой
Ответ(ы) на вопрос:
Гость
{Записал оба решения в одной программе. Можете использовать процедуры и функции по своему усмотрению}
const
n = 8;
type
vector = array[1..n] of integer;
const
c : vector = (14, 28, 55, 46, 23, 424, 32, 18);
function findMax(var v:vector; l,r:integer):integer;
{индекс максимального элемента в диапазоне от l до r}
var
i, m:integer;
begin
m := l;
for i := l + 1 to r do
if v[i] > v[m] then
m := i;
findMax := m
end;
procedure swap(var v:vector; l,r:integer);
{меняет местами элементы массива с заданными индексами}
var
t: integer;
begin
t := v[l];
v[l] := v[r];
v[r] := t
end;
procedure print(var v: vector; l,r:integer);
{печатает элементы массива под номерами от l до r}
var
i: integer;
begin
for i := l to r do
write(v[i],' ')
end;
function sum(x: integer): integer;
var
s: integer;
begin
s := 0;
x := abs(x);
while x > 0 do
begin
s := s + x mod 10;
x := x div 10
end;
sum := s
end;
var
v1, v2: vector;
i: integer; {просто цикловая переменная}
l,r: integer; {переменные для задачи 1}
k: integer; {для задачи 2}
begin
{1}
for i := 1 to n do
v1[i] := c[i];
l := findMax(v1, 1, n div 2);
r := findMax(v1, n div 2 + 1, n);
swap(v1, l, r);
print(v1, 1, n);
writeln;
{2}
k := 0;
for i := 1 to n do
if sum(c[i]) = 10 then
begin
k := k + 1;
v2[k] := c[i]
end;
print(v2, 1, k)
end.
Не нашли ответ?
Похожие вопросы