Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Delphi]Удаление четных индексов


Автор: krendel 18.12.2006, 17:44
Ребят уже все вохдные сижу не могу найти баг, где надо элементы на четных местах удалить.
Я принял, что i=1(А по нашему, если просто взглянуть на массив будет индекс 2)..
Кидаю весь код.. Чтоб удобней тестить было...
Проблема в последнем элементе, или прога его зануляет, или не переставляет перебором.. 
Помогите.. Завтра уже сдавать надо...
Если баг только, в том, что я принял нечетный индекс за четный по виду, то можете изменить..
Самое главное, чтоб прога правильно работу выполняла.. 
Код

begin
writeln('vvedite chislo testov');
readln(d);
for c:=1 to d do
  begin
   flag:=true;
   writeln('test nomer ',c);
   writeln('vvedite chislo elementov massiva');
   readln(n);
   setlength(a,n);
   writeln('vvedite sposob zapolnenia 1:generatorom cluch chisel 2:s
klaviatury');
   readln(d);
   case d of
    1:
     begin
      randomize;
      for i:=0 to n-1 do
       begin
        d:=round(random(2));
        if(d=0)then a[i]:=round(random(100))+1
         else a[i]:=-1*round(random(100))-1;
       end;
     end;
    2:
     begin
      writeln('vvodite massiv');
      read(a[0]);
      for i:=1 to n-1 do
       read(a[i]);
      readln;
     end
    else
     begin
      writeln('vvedena nedopustimaia komanda');
      flag:=false;
     end;
    end;
   if(flag)then
    begin
     writeln('vvedennyi massiv');
     for i:=0 to n-1 do
      write(a[i]:4);
     writeln;
     if(n>4)then
      begin
       i:=1;
       repeat
        a[i]:=0;
        i:=i+2;
       until(i>n-1);
              if(n mod 2=0 )then n:=n-1;
              i:=1;
                  repeat
                  if(a[i]=0)then
                     begin
                     for d:=i to n-2 do
                     a[d]:=a[d+1];
                     n:=n-1;
                     end;
                     i:=i+1;
                  until(i>=n-2);
              n:=n-1;
              end;
     writeln('izmenennyi vtoroi massiv');
     for i:=0 to n-1 do
      write(a[i]:4);
     writeln;
    end;
   writeln;
  end;
readln;
end.



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)