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

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

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

Восстановить пароль

Купить рекламу на форуме - 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