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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2011, 16:05   #1
Razdolbam
 
Регистрация: 23.09.2010
Сообщений: 6
По умолчанию Динамические массивы в Delphi

помогите програмку написать.
Дан одномерный массив. Все его элементы, не равные 0, переписать (сохраняя их порядок) в начало массива, а нулевые – в конец (новый массив не заводить).

чет никак недодуматься что в цикле писать
Код:
var a:array of integer;
 i,n,k:integer;
 procedure vivod (a:array of integer);
 var i:integer;
begin
 for i:=low(a) to high(a) do
 write(a[i]:4);
 writeln;
end;


begin
randomize;
writeln('n='); readln(n);
setlength(a,n);
for i:=1 to n do a[i-1]:=-5+random(10);
vivod(a); k:=0;
for i:=low(a) to high(a) do
begin
???????
end;
vivod(a);
readln;
end.

Последний раз редактировалось Stilet; 05.03.2011 в 08:42.
Razdolbam вне форума Ответить с цитированием
Старый 01.03.2011, 16:20   #2
firephenix
Пользователь
 
Регистрация: 14.02.2011
Сообщений: 89
По умолчанию

Код:
var
  a : array[1..10000] of integer;
  i,n,k : integer;

begin
  readln(n);
  for i:=1 to n do read(a[i]);
  k:=0;
  for i:=1 to n do
    if a[i]<>0
      then begin a[k]:=a[i]; Inc(k); end;
  for i:=k+1 to n do a[i]:=0;
  for i:=1 to n do write(a[i],' ');
  writeln;
  readln(n);
end.
Вложения
Тип файла: rar Solve.rar (1.6 Кб, 8 просмотров)

Последний раз редактировалось Stilet; 05.03.2011 в 08:42. Причина: Нет исходников
firephenix вне форума Ответить с цитированием
Старый 01.03.2011, 16:25   #3
Летучий_СкилетиК
Форумчанин
 
Аватар для Летучий_СкилетиК
 
Регистрация: 04.02.2011
Сообщений: 260
По умолчанию

Ввашем коде были ошибки...
вроде все исправил
Код:
type mass=array [byte] of integer;
var a:mass;
i,n,k,j,t:integer;
procedure vivod (a:mass);
var i:integer;
begin
for i:=low(a) to high(a) do
write(a[i]:4);
writeln;
end;


begin
randomize;
writeln('n='); readln(n);
setlength(a,n);
for i:=1 to n do a[i-1]:=-5+random(10);
vivod(a); k:=0;
for i:=low(a) to high(a) - 1 do
    for j:= i + 1 to high(a) do
    if abs(a[i])<abs(a[j]) then
        begin
              t:=a[i];
              a[i]:=a[j];
              a[j]:=t;
        end;
vivod(a);
readln;
end.
Летучий_СкилетиК вне форума Ответить с цитированием
Старый 01.03.2011, 16:25   #4
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Нормальненько!!!

Код:
a : array[1..10000] of integer;

//далее...
k:=0;

//и наконец
then begin a[k]:=a[i];
Хотя нужна работа с динамическим массивом...
Перемешивай дело с бездельем и не сойдешь с ума...

Последний раз редактировалось Grag; 01.03.2011 в 16:28.
Grag вне форума Ответить с цитированием
Старый 01.03.2011, 17:04   #5
firephenix
Пользователь
 
Регистрация: 14.02.2011
Сообщений: 89
По умолчанию

Цитата:
Сообщение от Grag Посмотреть сообщение
Нормальненько!!!

Код:
a : array[1..10000] of integer;

//далее...
k:=0;

//и наконец
then begin a[k]:=a[i];
Хотя нужна работа с динамическим массивом...
Да, ошибочка.
Код:
var
  a : array of integer;
  i,n,k : integer;

begin
  readln(n);
  SetLength(a,n+1);
  for i:=1 to n do read(a[i]);
  k:=0;
  for i:=1 to n do
    if a[i]<>0
      then begin a[k]:=a[i]; Inc(k); end;
  for i:=k+1 to n do a[i]:=0;
  for i:=1 to n do write(a[i],' ');
  writeln;
end.

Последний раз редактировалось firephenix; 01.03.2011 в 18:20.
firephenix вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамические массивы tolik_gd Общие вопросы C/C++ 6 28.12.2010 00:04
Динамические массивы. delphi Multiman Помощь студентам 15 29.11.2010 23:00
Динамические массивы с++ maxsept Общие вопросы C/C++ 2 27.10.2010 20:16
Динамические массивы и массивы варианты N@stya Помощь студентам 0 11.06.2010 21:09