Условие:
вычисление среднего значения в одномерном массиве для всех элементов между первым и вторым нулем в массиве (или от первого нулевого значения до конца массива). Длина и значения элементов массива вводятся с клавиатуры. Печатать элементы массива по: 5 штук, формату :12.
Долго мучаюсь, переделываю по-разному, но правильно никак не считает. Помогите, пожалуйста, найти ошибки:
PROGRAM LAB;
VAR
i, l, j, A, b, c, d :integer;
N, Sr, Sum :real;
Number :array[1..50] of real;
Fout :text;
BEGIN
Sum:=0;
writeln('Skolko budet chisel?');
readln(A);
for i:=1 to A do
begin
writeln('Vvedite ocherednoe chislo');
readln(Number[i]);
end;
assign(Fout,'A:\LAB.TXT');
rewrite(Fout);
writeln(Fout,'Ishodniy massiv iz ',A,' elementov');
for i:=1 to A do
begin
write(Fout,Number[i]:12);
if i mod 5 = 0 then writeln(Fout);
end;
writeln(Fout);
for i:=1 to A do
begin
if Number[i] = 0 then c:=i;
begin
for k:=c to A do
begin
if Number[k]>0 then
Sum:=Sum+Number[k];
if Number[k]=0 then d:=k;
b:=d-c-1;
Sr:=Sum/b
end;
end;
end;
write(Fout,'Srednee znachenie ravno ',Sr,'');
close(Fout);
END.
for i:=1 to A do
begin
if Number[i] = 0 then c:=i;
break;
end;
for k:=c to A do
begin
if Number[k]<>0 then
Sum:=Sum+Number[k];
if Number[k]=0 then
begin
d:=k;
break;
end ;
end;
b:=d-c-1;
Sr:=Sum/b;
Человек_Без_Имени, твоя программа что-то совсем не то считает ... Проверил хотябы чтоли на парочке массивов, вот например
i := 1;
while (i <= n - 1) and (x[i] <> 0) do inc(i);
if (i <= n - 1) and not ((x[i + 1] = 0) and (i + 1 <> n)) then begin
s := 0;
count := 0;
inc(i);
repeat
inc(count);
s := s + x[i];
inc(i);
until (i > n) or (x[i] = 0);
writeln((s / count):3:3);
end else writeln('В массиве нету искомого промежутка');
Упс, извиняюсь...
Вот еще как один вариант(все работает, проверил)
program suma;
uses crt;
var f:array[1..10] of integer;
k,s,i,n:integer;
begin
n:=0;
k:=0;
for i:=1 to 10 do read(f[i]);
for i:=1 to 10 do
begin
if f[i]=0 then k:=k+1 else
if (k<2)and(k>0) then begin
s:=s+f[i];
n:=n+1;
end;
end;
if (k<=1) then writeln('Net 0-x elov ili toka odin ');
if n=0 then writeln('pervix 2 0-x elementa ryadom');
writeln('Sum=',s/n:0:2);
readkey;
end.
Спасибо большое за помощь