Вопрос № 167555: Здравствуйте, решите пожалуйста 1. Пусть дан массив из N элементов. Каждый отрицательный элемент заменить полусуммой тех двух элементов, которые стоят рядом с ним справа и слева. 2. Записать в виде процедуры определени...
Вопрос № 167.555
Здравствуйте, решите пожалуйста 1. Пусть дан массив из N элементов. Каждый отрицательный элемент заменить полусуммой тех двух элементов, которые стоят рядом с ним справа и слева.
2. Записать в виде процедуры определение максимального числа в числовом массиве и привести пример вызова этой процедуры из программы
. С помощью функции, определяющей большее из двух чисел, найти большее из четырех чисел
.В одномерном массиве целых чисел заменить все элементы, меньшие среднего
арифметического, значением среднего арифметического, округленного до целого. Массив заполняется случайным образом
Отправлен: 17.05.2009, 19:26
Вопрос задала: Никоk (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Boriss
Здравствуйте, Никоk! Первая:
Код:
CONST N = 20; VAR ar: Array[1..N] of Integer; i: Integer; BEGIN {Заполним случайными числами, иначе нужно вставить код для ввода чисел} for i:=1 to N do ar[i] := round((random - 0.5)*100); WriteLn('Исходный массив');
for i:=1 to N do Write(ar[i]:5); WriteLn; {Проблема в том, что делать, если соседи отрицательные, но решил, что все подряд обрабатывать} for i:=2 to N-1 do if ar[i] < 0 then ar[i] := (ar[i-1] + ar[i+1]) div 2; WriteLn('Преобразованный массив'); for i:=1 to N do Write(ar[i]:5); WriteLn; END.
Вторая:
Код:
CONST N = 20;
{Используются открытые массивы} {В виде процедуры-функции} function Max1(a: Array of Integer): Integer; var i, i_max: Integer; begin i_max := 0; for i:=1 to High(a) do if a[i] > a[i_max] then i_max := i; Max1 := a[i_max] end;
{В виде процедуры} procedure Max2(a: Array of Integer; var max_el: Integer); var
i, i_max: Integer; begin i_max := 0; for i:=1 to high(a) do if a[i] > a[i_max] then i_max := i; max_el := a[i_max] end;
procedure FillArray(var a: Array of Integer); var i: Integer; begin for i:=0 to High(a) do a[i] := Random(200); end;
procedure ShowArray(a: Array of Integer); var i: Integer; begin for i:=0 to High(a) do Write(a[i]:5); WriteLn end;
VAR ar: array[1..N] of In
teger; max: Integer; BEGIN FillArray(ar); ShowArray(ar); Max2(ar, max); Writeln('Максимальный элемент, определенный с помощью процедуры: ', max); WriteLn('Максимальный элемент, определенный с помощью функции: ', Max1(ar)); END.
Третья:
Код:
function max(a1, a2: Integer): Integer; begin if a1 > a2 then max := a1 else max := a2 end;
var n1, n2, n3, n4: Integer; BEGIN Write('Введите первое целое число: '); ReadLn(n1); Write('Введите второе целое число: '); ReadLn(n2); Write('Введите третье целое число: '); ReadLn(n3); Write('Введите четвертое целое число: '); ReadLn(n4); WriteLn('Максимальн
ое число из четырех: ', max(max(n1,n2), max(n3, n4))); END.
Четвертая:
Код:
const N = 20; procedure FillArray(var a: Array of Integer); var i: Integer; begin for i:=1 to N do a[i] := Random(200) end;
procedure ShowArray(a: Array of Integer); var
i: Integer; begin for i:=0 to high(a) do Write(a[i]:5); WriteLn end;
function Midd(a: Array of Integer): Integer; var summ: Real; i: Integer; begin summ:=0; for i:=0 to high(a) do summ:= summ + a[i]; Midd := round(summ / (high(a) + 1)) end;
procedure WorkArray(var a: Array of Integer; mid: Integer); var i: Integer; begin for i:=0 to high(a) do if a[i] < mid then a[i] := mid end;
var ar: Array[1..N] of Integer; BEGIN FillArray(ar); ShowArray(ar); WriteLn('Замена элементов меньше среднего. Среднее = ', midd(ar)); WorkArray(ar, Midd(ar)); ShowArray(ar); END.
--------- Вывод - то место в тексте, где вы устали думать
Ответ отправил: Boriss (статус: Профессор) Россия, Саранск Организация: Мордовский госуниверситет, Саранск, Факультет Электронной Техники WWW:Программирование на Паскале ICQ: 320096696 ---- Ответ отправлен: 17.05.2009, 21:57
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 249350 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 1
Скажите "спасибо" эксперту, который помог Вам!
Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
на короткий номер 1151 (Россия)
Номер ответа и конкретный текст СМС указан внизу каждого ответа.
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.