Условие задачи : В одномерном массиве, состоящем из 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.