Помогите с задачками по информатике! Задачки на паскале и с функцией,
Помогите с задачками по информатике! Задачки на паскале и с функцией, или процедурой
Задать свой вопрос
Роман Сироватко
Предполагается, что необходимо сделать массив-переменную, скопировать туда элементы из массива-константы, а позже провести над ним какие-то преображения? И если у нас процедуры/функции с массивами, нужно для него определить тип?
Вовка Авсянников
Да, необходимо вывести в новый массив все это дело, определять тип тоже нужно.
Ирка Прилетина
Ок
1 ответ
Константин Сейжанов
Записал оба решения в одной программке. Можете использовать процедуры и функции по собственному усмотрению
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] gt; 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 := абс(x);
while x gt; 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.
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] gt; 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 := абс(x);
while x gt; 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.
Дарина Гороненкова
что-то я не очень сообразил решение, но все одинаково спасибо!
Инна Паланкина
Можешь написать просто две раздельных проги?
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
В сосуде 4целых одна пятая литр воды что бы заполнить сосуд
Математика.
Двум малярам Диме И Олегу поручили выкрасить фасад дома они разделили
Разные вопросы.
найти порядковый номер 41Э если в ядре 20 нейтронов
Разные вопросы.
в ряду натуральных чисел 3, 8, 10, 24, … 18 одно
Математика.
Предприятие по производству с/хоз продукции на производство затратило 3527000 руб Валовый
Разные вопросы.
Математика, задано на каникулы. ВАРИАНТ 1004
НОМЕР 1,2,3,4,5,6,7,8.
Математика.
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
выпиши в свою тетрадь те правила этикета которые тебе не были
Разные вопросы.
Анна хорошо учится у неё много подруг свободное от учёбы время
Обществознание.
Облако тегов