Поиск по этому блогу

пятница, 9 ноября 2018 г.

Домашнее задание

Петя успевает по математике лучше всех в классе, поэтому учитель задал ему сложное домашнее задание, в котором нужно в заданном наборе целых чисел найти сумму всех положительных элементов, затем найти где в заданной последовательности находятся максимальный и минимальный элемент и вычислить произведение чисел, расположенных между ними. Так же известно, что минимальный и максимальный элемент встречаются в заданном множестве чисел только один раз. Поскольку задач такого рода учитель дал Пете около ста, то Петя как сильный программист смог написать программу, которая по заданному набору чисел самостоятельно находит решение. А Вам слабо?

Входные данные
В первой строке входного файла INPUT.TXT записано единственное число N – количество элементов массива. Вторая строка содержит N целых чисел, представляющих заданный массив. Все элементы массива разделены пробелом. Каждое из чисел во входном файле не превышает 102 по абсолютной величине.

Выходные данные
В единственную строку выходного файла OUTPUT.TXT нужно вывести два числа, разделенных пробелом: сумму положительных элементов и произведение чисел, расположенных между минимальным и максимальным элементами. Значения суммы и произведения не превышают по модулю 3*104.

Примеры
INPUT.TXT
OUTPUT.TXT
1
5
-7 5 -1 3 9
17 -15
2
8
3 14 -9 4 -5 1 -12 4
26 180
3
10
-5 1 2 3 4 5 6 7 8 -3
36 5040

Решение
var  a:array[1..1000] of integer;   
px,n,mi,ma,i,mmi,mma,s,m:integer;
f,f1:text;
begin
assign(f,'input.txt');
    reset(f);
     assign(f1,'output.txt');
     rewrite(f1);
    readln(f,n);
  mi:=101; mmi:=0;s:=0;
  ma:=-101; mma:=0;
  for i:=1 to n do
  begin
  read (f,px);
  a[i]:=px;
  if px>0 then s:=s+px;
  if mi>px then begin mi:=px;mmi:=i; end;
  if ma<px then begin ma:=px;mma:=i; end;
  end;
close(f);
if mmi>mma then begin m:=mma; n:=mmi; end else begin m:=mmi; n:=mma; end;
px:=1;
for i:=m+1 to n-1 do
 px:=px*a[i];
 write(f1,s,' ',px);
  close(f1);

end.







Комментариев нет:

Отправить комментарий