Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2010, 15:43   #1
Diman_kemNVK
Новичок
Джуниор
 
Регистрация: 13.04.2010
Сообщений: 1
По умолчанию Как удалить нулевые элементы из массива?

Ну в общем задание такое: есть одномерный массив, состоящий из 10 произвольных элементов, требуется удалить из него нулевые элементы, если они в нем есть. Задание вроде бы простое, но я что-то ума не приложу как это сделать.. Подскажите пожалуйста, буду очень благодарен
Diman_kemNVK вне форума Ответить с цитированием
Старый 13.04.2010, 15:54   #2
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

нашёл в гугле..думаю принцип понятен

Код:
procedure TForm1.Button1Click(Sender: TObject);
type massiv=array [1..50] of real;
procedure del_mass(m, kol:integer; var y:massiv);
var i: integer;
begin
  for I := m to kol-1 do
    y[i]:=y[i+1];
end;
var i, n, k: byte;
    x: massiv;
begin
  n:=strtoint(edit1.text);
  for I := 1 to n do
    x[i]:=strtofloat(stringgrid1.Cells[i,0]);
  k:=0;
  for I := n downto 1 do
    begin
      if x[i]=0 then
        begin
          if k>=4 then break
          else
            del_mass(i,n,x);
          k:=k+1;
        end;
    end;
  for I := 1 to n-k do
    stringgrid2.cells[i,0]:=floattostr(x[i]);
end;
или

Код:
Program xa;
uses
  crt;
Type
  Mas = array [1..50] of integer;
var
  a:mas;
  i,n,CountDelZeroByMas:integer;
 
Procedure DelZeroByMas(PosZero,CountMas:integer);
var
  i:integer;
begin
  for i:=PosZero to COuntMas-1 do
    a[i]:=a[i+1]
End;
 
Procedure PrintMas(CountMas:integer);
var
  i:integer;
begin
  Writeln;
  for i:=1 to CountMas do
    Write(A[i],'  ');
  Writeln
End;
 
Begin
  repeat
    clrscr;
    Writeln('VVedute pa3mepnoct'' massiva');
    readln(n);
  until (n>0) and (n<51);
  clrscr;
  Writeln('Vvedute Cam Massiv');
  for i:=1 to n do
  begin
    Write('A[',i,']=');
    readln(a[i])
  end;
  clrscr;
  Writeln('Massiv do u3menenui');
  PrintMas(n);
  i:=1;
  CountDelZeroByMas:=0;
  repeat
    if a[i]=0 then
    begin
      inc(CountDelZeroByMas);
      DelZeroByMas(i,n-CountDelZeroByMas);
      dec(i)
    end;
    inc(i);
  until (i>n-CountDelZeroByMas) or (CountDelZeroByMas>3);
  Writeln('Massiv posle u3mNeNui');
  PrintMas(n-CountDelZeroByMas);
  readln
End.
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)

Последний раз редактировалось BARNEY; 13.04.2010 в 15:59.
BARNEY вне форума Ответить с цитированием
Старый 13.04.2010, 15:54   #3
Google2010
Форумчанин
 
Регистрация: 16.02.2010
Сообщений: 316
По умолчанию

553-566-179! недорого!
Google2010 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить из вещественного массива все элементы, отличающиеся от его максимального элемента не более чем на bingooo Паскаль, Turbo Pascal, PascalABC.NET 1 05.04.2010 20:15
Удалить из вещественного массива все элементы, отличающиеся от его максимального элемента не более чем на bingooo Помощь студентам 6 05.04.2010 18:42
Удалить элементы массива Маськ@ Паскаль, Turbo Pascal, PascalABC.NET 1 21.12.2008 17:46
Задачка про массив - Из массива удалить четные элементы, стоящие после максимального Crookers Общие вопросы C/C++ 4 23.09.2008 19:35
Нулевые элементы в матрицах ufoman Помощь студентам 5 26.04.2007 20:08