Условие задачи: В каждой из задач данного раздела предполагается, что задан массив чисел. Программа должна:
1) вводить размерность и элементы массива;
2) вводить некоторые дополнительные числа;
3) выполнять действия в соответствии с условием задачи;
4) выводить исходные данные и результаты вычислений.
Исходные данные для отладки программы выбрать самостоятельно. Для ввода и вывода массива использовать компонент StringGrid.
Вариант |
Задание |
5 |
Найти количество чисел, непринадлежащих промежутку (X, Y], и сумму отрицательных чисел, стоящих на четных местах |
Исходные данные :
A (массив)
X (число)
Y (число)
n (размер массива)
Результат:
S (сумма отрицательных чисел, стоящих на четных местах)
Kol (количество чисел, непринадлежащих промежутку (X, Y] )
Графическая схема алгоритма:
Таблица переменных:
Имя в задаче |
Имя в программе |
Тип |
Назначение |
n |
n |
integer |
Размер массива |
A |
A |
array[1..Max] of real |
Исходный массив |
X |
X |
real |
Заданное число |
Y |
Y |
real |
Заданное число |
i |
integer |
Переменная цикла |
|
K |
integer |
Переменная признака |
|
Kol |
integer |
Количество элементов |
|
S |
real |
Сумма |
|
Max |
const |
Верхняя граница массива |
Проектирование формы:
Таблица компонентов:
Элемент интерфейса |
Визуальный компонент |
Свойства |
Значение свойства |
Заголовок окна |
Form1 |
Caption |
РАБОТА С ОДНОМЕРНЫМИ МАССИВАМИ |
Метка для оформления ввода n |
Label1 |
Caption |
Ввести размер массива |
Метка для оформления ввода X |
Label2 |
Caption |
Ввести X |
Метка для оформления ввода Y |
Label3 |
Caption |
Ввести Y |
Метка для оформления ввода массива A |
Label4 |
Caption |
Ввести массив |
Поле вывода S |
Label5 |
Caption |
|
Поле вывода Kol |
Label6 |
Caption |
|
Кнопка “Вычислить” |
Button1 |
Caption |
Вычислить |
Поле ввода n |
Edit1 |
Text |
|
Поле ввода X |
Edit2 |
Text |
|
Поле ввода Y |
Edit5 |
Text |
|
Поле ввода массива A |
StringGrid1 |
FixedCols 0 FixedRows 1 ColCount 1 RowCount 2 Options: goEditing True goTabs True |
Таблица используемых событий:
Визуальный компонент |
Событие |
Процедура обработки события |
Реализуемый алгоритм |
Button1 |
OnClick |
TForm1.Button1Click |
Вычисление суммы отрицательных чисел, стоящих на четных местах и количества чисел, непринадлежащих промежутку (X, Y] |
Edit1 |
OnChange |
TForm1.Edit1Change |
Подгон StringGrid1 под размер массива |
Код процедуры обработки события:
procedure TForm1.Button1Click(Sender: TObject);
const
Max=20;
var
i,n,K,Kol:integer;
X,Y,S:real;
A: array[1..Max] of real;
begin
try
n:=StrToInt(Edit1.Text);
X:=StrToFloat(Edit2.Text);
Y:=StrToFloat(Edit3.Text);
for i:=1 to n do
A[i]:=StrToFloat(StringGrid1.Cells[i-1,1]);
K:=0;
S:=0;
i:=2;
While(i<=n)do
begin
if(A[i]<0)then
begin
S:=S+A[i];
K:=1;
end;
i:=i+2;
end;
if(K=0)then
begin
Label5.Caption:='В массиве нет таких элементов!';
end
else
begin
Label5.Caption:='Сумма отрицательных чисел, стоящих на четных местах равна '+FloatToStr(S);
end;
i:=1;
Kol:=0;
While(i<=n)do
begin
if(A[i]>Y)or(A[i]<=X)then
begin
Kol:=Kol+1;
end;
i:=i+1;
end;
Label6.Caption:='Количество чисел, непринадлежащих промежутку (X, Y] равно '+IntToStr(Kol);
except ShowMessage('Ошибка!');
end;
end;
procedure TForm1.Edit1Change(Sender: TObject);
const
Max=20;
var
i,n:integer;
begin
try
n:=StrToInt(Edit1.Text);
if(Max<n)then
begin
StringGrid1.Visible:=False;
ShowMessage('Максиальный размер массива равна 20!');
end
else
begin
StringGrid1.Visible:=true;
StringGrid1.ColCount:=n;
for i:=1 to n do
StringGrid1.Cells[i-1,0]:='A'+'['+IntToStr(i)+']';
end;
except ShowMessage('Ошибка!');
end;
end;
Окно программы:
Тестовые наборы:
n |
X |
Y |
Массив |
Результат |
7 |
1 |
3 |
-2 -1 0 1 2 3 4 |
Сумма отрицательных чисел, стоящих на четных местах равна -1 Количество чисел, непринадлежащих промежутку (X, Y] равно 5 |
7 |
2 |
6 |
1 2 3 4 5 6 7 |
В массиве нет таких элементов! Количество чисел, непринадлежащих промежутку (X, Y] равно 3 |
7 |
-3 |
1 |
1 -1 1 -2 1 -3 1 |
Сумма отрицательных чисел, стоящих на четных местах равна -6 Количество чисел, непринадлежащих промежутку (X, Y] равно 1 |
7 |
1 |
8 |
2 3 4 5 6 7 8 |
В массиве нет таких элементов! Количество чисел, непринадлежащих промежутку (X, Y] равно 0 |
4 |
-2 |
1 |
1 -1 2 -2 |
Сумма отрицательных чисел, стоящих на четных местах равна -3 Количество чисел, непринадлежащих промежутку (X, Y] равно 2 |
Вывод: Приобрели навыки разработки алгоритмов и программ с использованием операторов цикла
для вычисления сумм, произведения и количества элементов одномерного массива.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.