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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2015, 14:51   #1
Vadim228
Пользователь
 
Регистрация: 22.12.2015
Сообщений: 16
По умолчанию Задан одномерный массив. Все его элементы, не равные нулю

Задан одномерный массив. Все его элементы, не равные нулю, переписать (сохраняя их порядок) в начало массива, а нулевые элементы – в конец массива. Новый массив не заводить.
Vadim228 вне форума Ответить с цитированием
Старый 22.12.2015, 15:31   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Код:
uses crt;
var a:array[1..20] of byte;
i,j,k:byte;
begin
clrscr;
randomize;
for i:=1 to 20 do
begin
     a[i]:=random(10);
     write(a[i]:2);
end;
writeln;
i:=1;        k:=0;
while i<=20-k do
begin
 if a[i] = 0 then
  begin
    for j:=i to 19 do a[j]:=a[j+1];
    a[20]:=0;
    dec(i);
    inc(k);
  end;
 inc(i)
end;
for i:=1 to 20 do write(a[i]:2);
readln;
end.
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 22.12.2015, 16:09   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

может просто сортировать?
так разве не проще?

Код:
uses crt;
const n=20;
var a:array[1..n] of byte;
i,j,k:byte;
begin
clrscr;
randomize;
for i:=1 to n do
begin
     a[i]:=random(10);
     if (a[i]<>0) and (random(4)=0) then a[i]:=0; // чтобы нулей было больше
     write(a[i]:2);
end;
writeln;

for i:=1 to n-1 do
  for j:=i+1 to n do
   if (a[i]=0) then begin
     k:=a[i]; a[i]:=a[j]; a[j]:=k;
   end;

{вывод результата}
for i:=1 to n do write(a[i]:2);

readln;
end.

Последний раз редактировалось Serge_Bliznykov; 22.12.2015 в 16:44.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.12.2015, 16:19   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Проще. Наверное...
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 22.12.2015, 17:36   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А я бы так делал:
Код:
{Все его элементы, не равные нулю, переписать (сохраняя их порядок) в начало
 массива, а нулевые элементы – в конец массива. Новый массив не заводить.}
var a:array[1..10] of integer; i,j:integer;
begin
 for i:=1 to 10 do readln(a[i]);
 j:=1; for i:=1 to 10 do if a[i]<>0 then begin a[j]:=a[i]; inc(j); end;
 for i:=j to 10 do a[i]:=0;
 for i:=1 to 10 do writeln(a[i]);
 readln;
end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.12.2015, 07:59   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А я бы так делал:
согласен. так ещё лучше!
Ни одного лишнего действия.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных Новичок63 Помощь студентам 4 08.11.2015 16:30
Дан одномерный массив из 30 элементов. Сформировать второй массив, в котором сначала идут все элементы первого массива, кратные 5, Olzhakesh C# (си шарп) 1 29.04.2014 23:49
Дан массив X(N,M).Найти номера столбцов массива,все элементы которых четны. Из полученных значений сформировать одномерный массив. darwin1 Паскаль, Turbo Pascal, PascalABC.NET 3 16.03.2014 13:31
Дана матрица, размером M*N, которая состоит из целых чисел. Проверить есть ли в ней элементы, равные нулю. icecherry1 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 22.12.2013 14:27
Найти одномерный массив элементы которого равны минимальным значениям в строках исходной матрицы и одномерный массив элементы... Richik123 Microsoft Office Excel 1 16.10.2013 15:45