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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.01.2016, 10:49   #1
TunelLord
Пользователь
 
Регистрация: 22.01.2016
Сообщений: 20
По умолчанию Необходимо "сжать" целочисленный массив, выбросив из него нулевые элементы

3.Дан массив a(n) c целыми элементами . Необходимо "сжать" а , выбросив из него нулевые элементы . Если нулевых элементов нет , сообщить,что сжатие невозможно .
TunelLord вне форума Ответить с цитированием
Старый 22.01.2016, 14:41   #2
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Код:
var a:array of integer;
    i,j,n,c:integer;
begin
   Randomize;
   n:=5+Random(15);
   SetLength(a,n);
   For i:=Low(a) to High(a) do
   begin
      a[i]:=Random(10);
      Write(a[i],'  ');
   end;
   Writeln;
   Writeln;
   c:=0;
   i:=Low(a);
   Repeat
      If a[i]=0 then
      begin
         c:=c+1;
         n:=n-1;
         For j:=i to High(a)-1 do
            a[j]:=a[j+1];
         SetLength(a,n);
         i:=i-1;
      end;
      i:=i+1;
   Until i>High(a);
   For i:=Low(a) to High(a) do
      Write(a[i],'  ');
   Writeln;
   If c=0 then
      Writeln('NO NULL!');
   Readln;
end.
Сойдет?
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 22.01.2016, 16:28   #3
TunelLord
Пользователь
 
Регистрация: 22.01.2016
Сообщений: 20
По умолчанию

Да , спасибо .)
TunelLord вне форума Ответить с цитированием
Старый 22.01.2016, 16:56   #4
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Пожалуйста!
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 22.01.2016, 17:30   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

А мож так красивше будет?
Код:
function Pack(var x: TIntegerDynArray): integer;
var
  sidx: integer
begin
  result:= 0;
  
  for sidx:= 0 to length(x) - 1 do
    begin
      if x[sidx] = 0
        then continue;
      x[result]:= x[sidx];
      inc(result);
    end;
    
  SetLength(x, result);  
  // возвратит длину массива после удаления нулей
end;
Ахтунг! Аттеншн! Внимание! Увага!!! SHIT-CODE detected!!! Не отлаживал, писал на заборе!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 22.01.2016, 18:23   #6
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

min@y™, зачем длина массива? Он даже TIntegerDynArray не поймет...
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 22.01.2016, 18:36   #7
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Цитата:
зачем длина массива?
когда можно что-то возвратить из подпрограммы, я всегда пишу функцию, а не процедуру. У меня традиция такая.
Цитата:
Он даже TIntegerDynArray не поймет...
А когда это стало моей проблемой? Или у автора какой-то другой интернет?

Если твой метод лучше - так и пиши.
Du choc des opinions jaillit la verite.

...а если хуже - тем более пиши!

Errare humanum est, ignoscere divinum. гыгыгы
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 23.01.2016 в 04:35.
min@y™ вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Постоянно слетает галочка "автоматически" в "Параметры Excel", "Формулы", "Вычисления в книге" Alexsandrr Microsoft Office Excel 4 19.10.2013 14:22
Создать класс "Фигура", от него наследованием создать 3 класса ("треугольник", "четырехугольник", "окружность") funnyy Помощь студентам 3 17.10.2012 17:40
Уплотнить массив,удалив из него все нулевые строки и столбцы malishka ya@ Помощь студентам 0 29.05.2010 14:18
Уплотнить массив,удалив из него все нулевые строки и столбцы sonya17 Помощь студентам 0 27.05.2010 19:56
Напечатать текст, удалив из него все цифры и знаки "+" или "–". Язык С++. KaylasMKTY Помощь студентам 8 07.03.2010 21:35