
Pascal, как изменить код программы которая высчитывает сумму всех элементов, до последнего
положительного элемента(написать нужно не через break) вот код:var n, p,i,k:integer;m:array of real; s:real;begin write('n'); readln(n); setlength(m,n); for i:=0 to n-1 do m[i]:=random(21)-10; for i:=0 to n-1 do write(m[i]:8:2); writeln; for i:=n-1 downto 0 do if m[i]>0 then begin k:=i; break; end; for i:=0 to k do s:=s+m[i]; writeln('Сумма элементов до последнего положительного элемента =', s);

Ответы на вопрос

Ответ:
var n, p,i,k:integer;
m:array of real;
s:real;
begin
write('n');
readln(n);
setlength(m,n);
writeln;
for i:=0 to n-1 do
begin
m[i]:=random(21)-10;
write(m[i]:8:2);
if m[i]>0 then k:=i;
end;
writeln;
S:=0
for i:=0 to k do
s:=s+m[i];
writeln('Сумма элементов до последнего положительного элемента =', s);
Объяснение:
Оптимизируем
for i:=0 to n-1 do
m[i]:=random(21)-10;
for i:=0 to n-1 do
write(m[i]:8:2);
Объединим и заставим сразу считать k
for i:=0 to n-1 do
begin
m[i]:=random(21)-10;
write(m[i]:8:2);
if m[i]>0 then k:=i;
end;
выкидываем
for i:=n-1 downto 0 do
if m[i]>0 then
begin
k:=i;
break;
end;
И вот еще не помню уже, но не будет лишним сделать S=0, может конечно при описании оно и становится 0, но лишним не будет. Нас учили так.



Для изменения кода программы на Pascal так, чтобы она вычисляла сумму всех элементов до последнего положительного элемента без использования оператора `break`, вы можете воспользоваться другой логикой. Например, вы можете использовать дополнительную переменную для отслеживания наличия положительного элемента. Вот ваш исправленный код:
```pascal var n, p, i, k: integer; m: array of real; s: real;
begin write('n: '); readln(n); setlength(m, n); for i := 0 to n - 1 do m[i] := random(21) - 10; for i := 0 to n - 1 do write(m[i]:8:2); writeln; p := -1; // Инициализируем переменную p отрицательным значением for i := n - 1 downto 0 do if m[i] > 0 then begin p := i; // Запоминаем индекс последнего положительного элемента // break; // Не используем break end; if p >= 0 then // Проверяем, был ли найден положительный элемент begin s := 0; // Обнуляем сумму перед использованием for i := 0 to p do s := s + m[i]; writeln('Сумма элементов до последнего положительного элемента = ', s); end else writeln('В массиве нет положительных элементов.'); end. ```
В этом коде переменная `p` используется для отслеживания индекса последнего положительного элемента. Если такой элемент найден, программа вычисляет сумму элементов до этого индекса.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili