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

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

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

Автор: лоен 20.01.2008 19:50

собственно как исправить ошибку?

uses SysUtils;
const Nmax=10000;
function prime(n : LongInt): Boolean;
Var c : Boolean;
i : LongInt;
Begin
c:=True;
For i:=2 to round(sqrt(n)) do
If n mod i=0 then c:=False;
Prime:=c;
End;
var
n,k,i,s,b,j: integer;
a: array[1 .. Nmax] of integer;
begin
Writeln('Vvedite dliny posledovatelnosti(n<=10000)');
Readln(n);
Writeln('Vvedite posledovatelnost');
for i := 1 to n do Readln(A[i]);
i := 1;
while i <= n do begin
s := 0;
b := A[i];
while b > 0 do begin
S := s + (b mod 10);
b := b div 10;
end;
if (s mod 8) = 0 then begin
n := n - 1;
for j := i to n do a[j]:=a[j+1];
end else inc(i);
end;
for i :=1 to n Do begin
if Prime(a[i]) then
begin
for k:=n+1 downto i+1 do a[k]:=a[k-1];
n:=n+1;
i:=i+1;
end;
i:=i+1;
end;
for i :=1 to n Do Write(A[i],' ');
Readln;
end.


Добавлено через 4 мин.
если она тут одна >_<

Автор: volvo 20.01.2008 19:55

Собственно, почему в For-цикле изменяется управляющая переменная? Я же показывал тебе, что для изменения ее надо использовать While...

Автор: лоен 20.01.2008 20:06

нда, снова на том же самом, извиняюсь)