Изучение Delphi. Отчёт 4.1

Страницы работы

Содержание работы

Условие задачи: В каждой из задач данного раздела предполагается, что задан массив чисел. Программа должна:

1) вводить размерность и элементы массива;

2) вводить некоторые дополнительные числа;

3) выполнять действия в соответствии с условием задачи;

4) выводить исходные данные и результаты вычислений.

Исходные данные для отладки программы выбрать самостоятельно. Для ввода и вывода массива использовать компонент StringGrid.

Вариант

Задание

5

Найти количество чисел, непринадлежащих промежутку (X, Y], и сумму отрицательных чисел, стоящих на четных местах

Исходные данные :

A (массив)

X (число)

Y (число)

n (размер массива)

Результат:

S (сумма отрицательных чисел, стоящих на четных местах)

Kol (количество чисел, непринадлежащих промежутку (X, Y] )

Графическая схема алгоритма:

Начало,Конец,Ввод: n 

,Нет,0

,K = 0

,i ≤ n

,Да

,Ввод: X, Y 

,Ввод массива A 

,S = 0

,i = 2

,Ai < 0

,Да

,Нет,Kol = Kol+1,K = 1

,i = i+2

,K = 0

,В массиве нет таких элементов 

,Вывод: Kol 

,i = 1

,Kol = 0

,i ≤ n

,Ai > Y
или
Ai ≤ X



,S = S+ Ai,i = i+1

,Да

,Да

,Нет,Да

,Нет,Нет,Вывод: S 

,1

,2

,3

,4

,5

,6

,7

,8

,9

,1000

,1100

,1200

,1300

,1400

,1500

,1600

,1700

,1800

,1900

,2000

,2100

,2200
 


Таблица переменных:

Имя в задаче

Имя в программе

Тип

Назначение

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

Верхняя граница массива

Проектирование формы:

Label1,Label2,Label3,Label4
Edit1,Edit2,Edit3
Button1
Label5,Label6,StringGrid1


Таблица компонентов:

Элемент интерфейса

Визуальный компонент

Свойства

Значение свойства

Заголовок окна

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

Вывод:  Приобрели навыки разработки алгоритмов и программ с использованием операторов цикла      

для вычисления сумм, произведения и количества элементов одномерного массива.

Похожие материалы

Информация о работе