Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРОГРАММИРОВАНИЕ_3.doc
Скачиваний:
11
Добавлен:
09.04.2015
Размер:
684.54 Кб
Скачать

Пример выполнения задания 3

Задание.

Дано натуральное N и последовательность целых чисел.

Написать программы решения следующих задач:

  1. получить произведение тех членов последовательности, которые нечетны и отрицательны;

  2. вычислить среднее арифметическое всех положительных членов последовательности;

  3. найти наибольшее из членов последовательности, которые делятся на 3, и его номер.

Проверка четности:

  1. mod (5 mod 2 = 1 – число нечетное)

  2. 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.

13