Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Последовательность чисел

Автор: Римус 2.03.2007 23:42

И еще одна задача, если можно. Не представляю как решать.
Условие
. Даны натуральное число n, действительные числа a1,..,an.В последовательности a1,....,an все неотрицательные члены, нo принадлежащие отрезку [a,b] (a>=0, a<b) -удалить.

У меня получилось неправильно

program pract10_1;
const WG=50;
type tmasm=array[1..WG] of integer;
var i,j,k,a,b,n:byte; z,ud:tmasm;
begin
writeln('vvedite kol. elementov');
readln(n);
for i:=1 to n do
begin
writeln('wwedite ',i,' element');
read(z[i]);
end;
writeln('vvedite a and b');
writeln('a=');read(a);
writeln('b=');read(b);
k:=0;
for I:=1 to n do
while a>=0 do
if (z[i]>0) and (z[i]>a) and (z[i]<b) then inc(k);z[k]:=z[i];
J:=0;I:=0;
repeat
while z[i]=ud[i] do
begin
J:=1;
repeat
z[j]:=z[j+1];J:=j+1;
until J>=n;
n:=n-1;
end;
until i>=n;
for i:=n+1 to n do z[i]:=0;
writeln('poluchenia massiv:');
for i:=1 to n do write(' ',z[i]);writeln;readln;
end.
.

Автор: volvo 3.03.2007 0:04

  ...
write('a=');readln(a);
write('b=');readln(b);

i := 1;
while i <= n do begin

if (z[i]>0) and (z[i]>=a) and (z[i]<=b) then begin { <--- интервал открытый, или закрытый ??? }
for j := i to n - 1 do z[j] := z[j + 1];
n := n - 1;
end;

inc(i);
end;

writeln('poluchenia massiv:');
for i:=1 to n do write(' ', z[i]);
writeln;
readln;
...
Этого вполне достаточно...

Добавлено через 3 мин.
Кстати,
Цитата
действительные числа a1,..,an
- у тебя определен массив целых

Автор: Римус 3.03.2007 0:14

Спасибо за замечания и решение.