В одномерном массиве, состоящем из n вещественных элементов, вычислить сумму элементов массива, расположенных до первого и после последнего нулевого элементов — Pascal(Паскаль)

var
a:array[1..100]of integer;
i,s,n,f:integer;
begin
writeln('vvedite n');
readln(n);
randomize;
for i:=1 to n do
begin
a[i]:=random(10);
if a[i]=0 then f:=1;
end;
writeln('massiv');
for i:=1 to n do
write(a[i],' ');
writeln;
i:=1;
while (a[i]<>0)and(i<=n) do
begin
s:=s+a[i];
inc(i);
end;
i:=n;
while (a[i]<>0)and(i>0) do
begin
s:=s+a[i];
dec(i);
end;
if f=0 then writeln('nuley net')else
writeln('s=',s);
readln;
end.

Следующий вариант

uses crt;
const nmax=100;
var a:array[1..nmax] of real;
    n,i,i1,ip,k:byte;
    s:real;
begin
clrscr;
repeat
write('Размер массива до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Введите элементы массива:');
for i:=1 to n do
 begin
  write('a[',i,']=');
  readln(a[i]);
 end;
clrscr;
writeln('Массив:');
for i:=1 to n do
write(a[i]:0:2,' ');
writeln;
writeln;
if a[1]=0 then i1:=1
else
 begin
  i:=1;
  while (a[i]<>0)and(i<n) do
  i:=i+1;
  if i=n then
   begin
    write('В массиве нет двух нолей');
    readln;
    exit;
   end
  else i1:=i;
 end;
if a[n]=0 then ip:=n
else
 begin
  i:=n;
  while (a[i]<>0)and(i>i1) do
  i:=i-1;
  if i=i1 then
   begin
    write('В массиве нет двух нолей');
    readln;
    exit;
   end
  else ip:=i;
 end;
writeln('Первый ноль имеет индекс=',i1);
writeln('Последний ноль имеет индекс=',ip);
s:=0;
i:=1;
while i<i1 do
 begin
  s:=s+a[i];
  i:=i+1;
 end;
i:=n;
while i>ip do
 begin
  s:=s+a[i];
  i:=i-1;
 end;
writeln('Сумма до первго ноля и после последнего=',s:0:2);
readln
end.

Leave a Comment

27 − 21 =