Условие задачи : Сформировать и вывести на экран массив, элементы которого заданы датчиком случайных чисел на интервале [-19, 26] . Найти произведение элементов с нечетными номерами.
Сложность : легкая .
Задача похожа на (эту), но там мы искали сумму четных элементов, так что будем опираться на неё.
Первое что мы сделаем мы создадим свой тип данных как и зачем читайте (тут) :
type massiv = array [1..100] of integer;
Дальше нужно определить какие переменные нам нужны. Они будут те же самые что и в этой задаче, только заместо суммы будет произведение.
var n,proizv,i : integer; mass : massiv;
Теперь мы просим пользователя ввести размер массива, также нам нужно присвоить начальное значение нашей переменной proizv единицу, т.к. в неё мы будем заносить произведение, а если этого не сделать то произведение всегда будут равна 0. ВСЕГДА!!!
И также заодно включим генератор случайных чисел, чтобы числа у нас не повторялись.
randomize; // генератор случайных чисел. write('Введите размер массива : '); readln(n); proizv := 1;
Теперь цикл. Что мы будем в нём делать ?
- Сначала мы присвоим значение элементу массива.
- Выведем его на экран
- И проверим на нечетность.
Условие нечетности :
if (mass[i] mod 2 <> 0) then proizv := proizv * mass[i];
Оно противоположно четности, про неё читайте ( здесь )
Сам цикл :
for i:=1 to n do begin mass[i] := random(46) - 19; writeln(i, ' число : ', mass[i]); if (mass[i] mod 2 <> 0) then proizv := proizv * mass[i] else writeln('Число ',mass[i],' четное, умножено не БУДЕТ!!! '); end;
Думаю что тут всё понятно, единственное что может вызвать трудность это random(), если написать random(46), то число у нас будет от 0 до 46 , а чтобы было только до 26 мы вычитаем 19, чтобы понять попробуйте по подставляйте.
Вот и всё задача решена.
Весь код программы :
uses crt; type massiv = array [1..100] of integer; var n,proizv,i : integer; mass : massiv; begin clrscr; randomize; // генератор случайных чисел. write('Введите размер массива : '); readln(n); proizv := 1; for i:=1 to n do begin mass[i] := random(46) - 19; writeln(i, ' число : ', mass[i]); if (mass[i] mod 2 <> 0) then proizv := proizv * mass[i] else writeln('Число ',mass[i],' четное, умножено не БУДЕТ!!! '); end; writeln('Произведение массива равно : ', proizv); readln; // чтобы программа не закрывалась. end.