Найти сумму элементов массива, расположенных между первым и последним отрицательными элементами - Pascal (4605)
Формулировка задачи:
Дан одномерный массив, состоящий из N вещественных элементов. Найти сумму элементов массива, расположенных между первым и последним отрицательными элементами.
Формат входных данных
В первой строке входного файла содержится число N (1\le N\le 100). Во второй строке даны N вещественных чисел через пробел.
Формат выходных данных
Выведите в выходной файл искомую сумму с 3 знаками после десятичной точки или 0, если в заданном массиве меньше 2 отрицательных элементов.
Примеры:
Вход
5
-2.364 -4.564 0 3.46 -3.57
Выход
-1.104
Var A:array[1..100] of real;
f,f1:text;
i,n,ind1,ind2:integer;
s:real;
Begin
Assign(f,'C:\Program Files (x86)\PascalABC.NET\input.txt');
assign (f1,'C:\Program Files (x86)\PascalABC.NET\output.txt');
Reset(f);
rewrite(f1);
readln(f,n);
For i:=1 to n do
Begin
read(f,A[i]);
if (A[i]<0)and(ind1<0) then ind1:=i;
if (A[i]<0) then ind2:=i;
End;
if (ind1=ind2) then writeln(f1,'0')
else begin
s:=0;
For i:=ind1 to ind2 do
s:=s+A[i];
writeln(f1,s:0:3);
Close(f);
close(f1);
end;
End.Решение задачи: «Найти сумму элементов массива, расположенных между первым и последним отрицательными элементами»
textual
Листинг программы
Var A:array[1..100] of real; f,f1:text; i,n,ind1,ind2:integer; s:real; Begin Assign(f,'input.txt'); assign (f1,'output.txt'); Reset(f); rewrite(f1); read(f,n); ind1:=0; ind2:=0; For i:=1 to n do Begin read(f,A[i]); if A[i]<0 then begin if ind1=0 then ind1:=i else ind2:=i; end; end; if (ind1=0)or(ind2=0) then writeln(f1,'0') else begin s:=0; For i:=ind1+1 to ind2-1 do s:=s+A[i]; writeln(f1,s:0:3); end; close(f); close(f1); End.
Объяснение кода листинга программы
В данном коде объявлены следующие переменные:
- A: массив из 100 элементов типа real (числа с плавающей точкой).
- f: файл для чтения и записи.
- f1: файл для записи результата.
- i, n: переменные для чтения и записи чисел из файла.
- ind1, ind2: переменные для отслеживания индексов первого и последнего отрицательных элементов массива A.
- s: переменная для хранения суммы элементов массива A между первым и последним отрицательными элементами.
Код открывает файлы
input.txtиoutput.txt, считывает число элементов массива A из первого файла, а затем записывает результат в второй файл. Если первый или второй элемент массива A отрицательные, то переменные ind1 и ind2 соответственно устанавливаются равными i, где i - это текущий индекс. Если оба элемента отрицательные, то в файлoutput.txtзаписывается число 0. В противном случае, сумма элементов массива A между ind1 и ind2 записывается в файлoutput.txt. После этого файлы закрываются.