Условие задачи : В одномерном массиве, состоящем из N вещественных элементов, вычислите сумму целых частей элементов массива, расположенных после последнего отрицательного элемента (Язык Pascal)
Сложность : средняя .
Решение задачи :
Для начала продумаем наше решение. Сначала мы заполним массив в ручную и сразу там определим последний отрицательный элемент , мы будем вводить число и смотреть больше оно нуля или нет, если меньше, то переменной last присвоим индекс этого элемента, именно индекс , для того чтобы потом от него начинать цикл.
Потом второй цикл, в котором мы будем отделять целую часть от числа и считать сумму.
Для того чтобы найти сумму целых частей элементов массива, расположенных после последнего отрицательного элемента нам понадобятся следующие переменные :
- Переменная mass — для массива
- Переменная summa — для суммы целых частей
- Переменная n — для кол-ва элементов массива
- Переменная last — для последнего отрицательного элемента
- Переменная i — счетчик, для цикла
Начнем мы с каркаса нашей программы :
uses crt;
type
massiv = array [1..100] of real;
var
mass : massiv;
summa, i, n, last : integer;
begin
clrscr;
summa := 0;
write('Введите кол-во элементов : '); readln(n);
end.
Тут мы создали свой тип данных для массива, как и зачем читайте ( тут ) дальше объявили все переменные, присвоили переменной summa ноль, чтобы не было ошибок, и попросили пользователя ввести кол-во элементов.
Дальше мы заполним наш массив числами и определим последнее наименьшее число :
for i:=1 to n do
begin
write('Введите ', i , ' элемент :'); readln(mass[i]);
if mass[i] < 0 then
last := i ;
end;
И так мы пустили цикл, в нем попросили пользователя ввести число потом смотрим меньше ли это число нулю , если да но записываем индекс(порядковый номер) этого числа и так с каждым числом, т.е. если например первой число было меньше нуля, а потом второе число тоже меньше нуля, то уже оно будет последним отрицательным.
Теперь второй цикл в котором мы будем считать сумму, мы сделаем цикл не от 1-го а от last+1 , это будем значить что первое число которое мы возьмем для суммы будет после последнего отрицательного элемента. Целую часть мы будем искать с помощью функции trunc.
for i:=last+1 to n do
summa := summa + trunc(mass[i]);
И нам останется только вывести сумму.
Всё решение задачи Pascal :
uses crt;
type
massiv = array [1..100] of real;
var
mass : massiv;
summa, i, n, last : integer;
begin
clrscr;
summa := 0;
write('Введите кол-во элементов : '); readln(n);
for i:=1 to n do
begin
write('Введите ', i , ' элемент :'); readln(mass[i]);
if mass[i] < 0 then
last := i ;
end;
for i:=last+1 to n do
summa := summa + trunc(mass[i]);
writeln('Сумма целых частей элементов после ', mass[last]:2:2, ' равна : ', summa);
readln;
end.
