Процедура обработки щелчка на кнопке «Этап 1» (кн. Button_etap1)

Задачка 2.

1. Для вещественного массива Х=(X1, X2, ..., Хn) отыскать сумму S и число k тех его частей, которые попадают в данный отрезок [A,B]; удалить из массива последний таковой элемент. Если таких частей нет, то выдать соответственное сообщение.

2. Отсортировать массив Х по возрастанию и отыскать среднее значение С 4 больших его частей. Поменять Процедура обработки щелчка на кнопке «Этап 1» (кн. Button_etap1) каждый 2-ой элемент массива Х на С.

Входные данные: Массив Х=(X1, X2, ..., XN), A, B.

Выходные данные: S, k, С; массив Х после удаления последнего его элемента, принадлежащего интервалу [A,B]; отсортированный массив Х и массив Х после подмены каждого второго элемента на С.

Разобьем Процедура обработки щелчка на кнопке «Этап 1» (кн. Button_etap1) решение задачки в согласовании с заданием на два шага.

Метод первого шага включает последующие деяния:

- ввод массива Х;

- поиск частей XiÎ[A,B], подсчет суммы S и количества k таких частей; запоминание местоположения i0 еще одного такового элемента;

- удаление из массива Х элемента с большим номером i0 и вывод массива на экран.

Метод Процедура обработки щелчка на кнопке «Этап 1» (кн. Button_etap1) второго шага содержит такие шаги:

- сортировка приобретенного массива Х и вывод его на экран;

- вычисление С как среднего значения последних 4 частей;

- преобразование массива Х методом подмены каждого второго элемента на значение С и вывод его на экран.

Опишем подробнее оба метода.

Ввод массива. Для работы с одномерным массивом Х Процедура обработки щелчка на кнопке «Этап 1» (кн. Button_etap1) поначалу введем его размерность (N), т.е. количество частей массива. Потом для ввода всех элеметов массива организуем цикл по номеру элемента i. В этом цикле введем очередной элемент Xi.

Поиск частей XiÎ[A,B], подсчет S, k, i0. Для подсчета обозначенных величин используем цикл по индексу частей массива Х Процедура обработки щелчка на кнопке «Этап 1» (кн. Button_etap1), организованный для ввода массива. Перед циклом величинам S, kприсвоим изначальное значение 0. Снутри цикла проверим условие: (X[i]>=A и X[i]<=B). Если условие производится, то способом накапливания вычислимSиk,ав переменной i0 запомним положение отысканного элемента.

Удаление элемента с номером i0 из массива Х.Удаление элемента осуществим в цикле, сдвинув на одну Процедура обработки щелчка на кнопке «Этап 1» (кн. Button_etap1) позицию на лево элементы массива, начиная от хi0+1 до хn, и разместив их на позициях с номерами от i0 по n-1.Потом размерность массива уменьшим на 1.

Сортировка приобретенного массива Х.На 1-ом шаге ищем меньшее значение посреди частей с 1-го по N-ый, и отысканный элемент меняем местами с Процедура обработки щелчка на кнопке «Этап 1» (кн. Button_etap1) 1-ым. На 2-ом шаге ищем меньшее значение посреди частей со 2-го по N-ый, и отысканный элемент меняем местами со 2-ым. На i-ом шаге ищем меньшее значение посреди частей с i-го по N-ый, и отысканный элемент меняем местами с i -ым. Таким макаром, сортировка осуществляется за Процедура обработки щелчка на кнопке «Этап 1» (кн. Button_etap1) N-1 шаг (цикл по i), при этом на каждом шаге ищется малый элемент и его номер (цикл по j), а потом отысканный малый элемент изменяется местами с i-м элементом массива.

Вычисление С как среднего значения последних 4 частей: С=(XN-3+ XN-2+ XN-1+ XN)/4.

Преобразование массива Х методом подмены каждого Процедура обработки щелчка на кнопке «Этап 1» (кн. Button_etap1) второго элемента на значение С. Для этого организуем цикл по i= 1,2, …, [n/2], где [n/2] - наибольшее целое, не првосходящее n/2. Снутри цикла исполняем преобразование X2*i =С.

Методы первого и второго шагов представлены на рисунках 10.2, 10.3.

C= (XN+ XN-1+ XN-2+ XN-3) / 4
Да

Скомпонуем последующую форму и настроим ее характеристики.

Начальная Процедура обработки щелчка на кнопке «Этап 1» (кн. Button_etap1) форма после переименования Форма с плодами

объектов

Глобальные объявления

Implementation

type mas=array[1..10] of real;

var X:mas;

N:integer;

Процедура обработки щелчка на кнопке «Этап 1» (кн. Button_etap1)

procedure TForm1.Button_etap1Click(Sender: TObject);

Var

A,B,S:real;

i,i0,k:integer;

begin

A:=StrToFloat(Edit_A.Text);

B:=StrToFloat(Edit_B.Text Процедура обработки щелчка на кнопке «Этап 1» (кн. Button_etap1));

N:=Memo_X.Lines.Count; // размерность X

k:=0; S:=0;

for i:=1 to N do

begin

X[i]:=StrToFloat(Memo_X.Lines[i-1]);

if (X[i]>=A) and (X[i]<=B) then

begin

k:=k+1;

S:=S+X[i];

i0:=i; // номер последнего элемента из интервала [A,B]

end;

end;

If (k=0) then

ShowMessage('Массив X Процедура обработки щелчка на кнопке «Этап 1» (кн. Button_etap1) не содержит частей из интервала ['+

FloatToStr(A) + ',' + FloatToStr(B)+']')

else

begin

Edit_k.Text:=IntToStr(k);

Edit_S.Text:=FloatToStr(S);

for i:=i0 to N-1 do

X[i]:=X[i+1];

N:=N-1;

// вывод в поле Memo_X1 массива Х после удаления эл-та

for i:=1 to N do

Memo_X1.Lines.Add(FormatFloat('##0.0',X Процедура обработки щелчка на кнопке «Этап 1» (кн. Button_etap1)[i]))

end

end;


proceduri-upravleniya-proektom-po-tradicionnoj-metodologii.html
procedurnie-osnovi-disciplinarnogo-proizvodstva.html
procedurnoe-teksturirovanie.html