- •Лабораторная работа № 3 циклический вычислительный процесс расчет и оформление таблиц
- •Основные свойства компонента
- •Пример выполнения работы
- •Текст программы
- •Форма с результатами
- •Рабочее задание
- •Варианты задания 1
- •Варианты задания 2
- •Пример выполнения задания 2
- •Пример выполнения задания 3
- •If CheckBox1.Checked
Пример выполнения задания 3
Задание.
Дано натуральное N и последовательность целых чисел.
Написать программы решения следующих задач:
получить произведение тех членов последовательности, которые нечетны и отрицательны;
вычислить среднее арифметическое всех положительных членов последовательности;
найти наибольшее из членов последовательности, которые делятся на 3, и его номер.
Проверка четности:
mod (5 mod 2 = 1 – число нечетное)
odd(x) возвращает TRUE, если x нечетное
Описание формы
Компонент |
Свойство |
Значение |
SpinEdit1 |
MinValue |
10 |
MaxValue |
30 | |
Value |
10 | |
CheckBox1 |
Caption |
Произведение |
Hint |
Произведение членов последовательности, которые нечетны и отрицательны | |
ShowHint |
True | |
CheckBox2 |
Caption |
Среднее арифметическое |
Hint |
Среднее арифметическое всех положительных членов последовательности | |
ShowHint |
True | |
CheckBox2 |
Caption |
Наибольшее |
Hint |
Наибольшее из чисел, которые делятся на 3 | |
ShowHint |
True |
Var Form1: TForm1;
n:integer;
implementation
{$R *.dfm}
//вывод заголовков строк
procedure TForm1.FormCreate(Sender: TObject);
begin
Label1.Caption:=''; Label2.Caption:=''; Label3.Caption:='';
with StringGrid1 do
begin
cells[0,0]:='Номер';
cells[0,1]:='Элемент';
end;
end;
//формирование и вывод последовательности
procedure TForm1.Button1Click(Sender: TObject);
var j:byte;
begin
n:=SpinEdit1.Value;
Randomize;
with StringGrid1 do
begin
ColCount:=n+1;
for j:=1 to n do
begin
cells[j,0]:=' '+IntToStr(j);
cells[j,1]:=' '+IntToStr(-50+random(100));
end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var j:integer;p,s,k,m,nom:integer;
begin
//произведение отрицательных и нечетных
//членов последовательности
If CheckBox1.Checked
then
with StringGrid1 do
begin
p:=1;
for j:=1 to n do
begin
if (StrToInt(Cells[j,1])<0) and odd(StrToInt(Cells[j,1]))
then p:=p*StrToInt(Cells[j,1]);
end;
Label1.caption:=IntToStr(p)
end
else
Label1.caption:='';
//среднее арифметическое положительных
//членов последовательности
if CheckBox2.Checked then
with StringGrid1 do
begin
s:=0;k:=0;
for j:=1 to n do
begin
if StrToInt(Cells[j,1])>0 then
begin
s:=s+StrToInt(Cells[j,1]);
k:=k+1
end;
end;
if k=0 then
Label2.caption:='Положительных элементов нет'
else
Label2.caption:=FloatToStr(s/k)
end
else Label2.caption:='';
//наибольший из членов последовательности,
//которые делятся на 3
if CheckBox3.Checked then
with StringGrid1 do
begin
M:=-MaxInt; Nom:=0;
for j:=1 to n do
begin
if StrToInt(Cells[j,1]) mod 3 =0 then
if StrToInt(Cells[j,1])>M then
begin M:=StrToInt(Cells[j,1]); Nom:=j end;
end;
if Nom=0 then
Label3.caption:='Нет элементов, которые делятся на 3'
else
Label3.caption:='Число '+IntToStr(M)+' '+'Номер '+IntToStr(Nom)
end
else
Label3.caption:='';
end;
end.