Вопрос задан 17.06.2023 в 13:21. Предмет Информатика. Спрашивает Borisov Maks.

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);
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Ходюков Андрей.

Ответ:

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, но лишним не будет. Нас учили так.

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для изменения кода программы на 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` используется для отслеживания индекса последнего положительного элемента. Если такой элемент найден, программа вычисляет сумму элементов до этого индекса.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос