никита20029
09.06.2020 12:23

Pascal
Надо что-то исправить, чтобы процедура "poparno" меняла местами попарно рядом стоящие элементы выводимых массивов, а пока что оно выполняет функцию рандомно, не учитывая массивов

type
mas=array[1..20] of integer;
var mas1, mas2 :mas;
Procedure Form(var mas1: mas; size:byte);
var i:byte;
begin
for i:=1 to size do
mas1[i]:=random(256);
end;

Procedure vivod(mas1: mas; size: byte);
var i: byte;
begin
for i:=1 to size do
write(mas1[i]:5);
end;

function nenul (mas1: mas; size: byte): integer;
var
i,k: byte;
begin
k:=0;
for i:=1 to size do
if mas1[i]<>0 then k:=k+1;
nenul:=k;
end;

procedure poparno(var mas1: mas; size: byte; x:integer);
var
i:byte;
begin
for i:=1 to size do
begin
mas1[i]:=random(256);
end;
i:=1;
while i begin
x:=mas1[i];
mas1[i]:=mas1[i+1];
mas1[i+1]:=x;
i:=i+2;
end;
end;

var size:byte;
k,x:byte;
begin
form(mas1, 10);
writeln('массив F ');
vivod(mas1, 10);
writeln;
writeln('Количество ненулевых элементов = ', nenul(mas1, 10):5);
poparno(mas1, 10, x);
vivod(mas1, 10);
form(mas2, 20);
writeln;
writeln;
writeln('Массив P ');
vivod(mas2, 20);
writeln;
writeln('Количество ненулевых элементов = ', nenul(mas2, 20):5);
poparno(mas2, 20, x);
vivod(mas2, 20);
end.

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
Seks7383
19.07.2021 06:17

program Round;

var

 C, R, S: Real;  // C-длина окружности, R-радиус, S-площадь круга

begin

 Write ('Введите длину окружности: ');  // вывод на экран сообщения

 ReadLn (C);   // ввод длины окружности

 if C < 0 then begin // проверка на отрицательное значение

   WriteLn ('Введено отрицательное значение');

   ReadLn;  // ждать нажатия Enter

   Exit;    // выход из программы

 end;

 R := C / 2/ Pi;  // расчет радиуса из длины окружности

 S := Pi * R * R; // расчет площади круга

 WriteLn ('Площадь круга = ', S);  // вывод результата

 ReadLn;                           // ждать нажатия Enter

end.

Объяснение: в комментариях к программе

0,0(0 оценок)
Ответ:
diankakakutkin
28.04.2020 00:33
Судя по названию функций, речь идет об операции деления по модулю (остаток от деления, она обозначается как %).
По условию задания не очевидно, что является делителем, а что делимым, поэтому в решении будут рассмотрены оба варианта.

Немного теории. Если a делимое и b делитель, то существуют единственные q и r, такие что:
a = b * q + r; где a, b, q, r  - целые числа, и b не равно 0, 0 <= r < |b|.
То есть, если мы подобрали такие q и r, что выполняется условие, то это значит что они единственные и верные.

Вначале будет рассмотрен вариант, где второй аргумент функции делится на первый аргумент функции.

mod(-7,87) = 87 % (-7) = 3 . Проверка: 87 = (-7)*q + r = (-7)*(-12) + 3.
mod(10,99) = 9. Проверка: 99 = 10 * 9 + 9.
mod(-7,-13) = 1. Проверка: -13 = (-7) * q + r = (-7)*2 + 1.

Далее рассматривается вариант, когда первый аргумент функции делится на второй аргумент.
a = b * q + r.

mod(-7,87) = -7 % 87 = 80. Проверка: -7 = 87 * (-1) + 80.
mod(10,99) = 10. Проверка: 10 = 99 * 0 + 10.
mod(-7,-13)=-7 % - 13 = 6. Проверка: -7 = -13 * 1 + 6.

П.С. На калькуляторы в Интернете не ориентируйтесь, они не корректно обрабатывают такие выражения.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота