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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2009, 22:11   #1
TiK_Tak
 
Регистрация: 23.11.2009
Сообщений: 3
По умолчанию Помогите разобраться с лабораторной по динамическим структурам данных

Ребята, вообщем есть следующее задание:

Разделить заданный список на два списка, в первый список включить элементы с четными значениями, а во второй с нечетными.

Это надо сделать на Pascal.

Помогите разобраться, что и как делать???
TiK_Tak вне форума Ответить с цитированием
Старый 23.11.2009, 23:39   #2
Денис_Рассветный
 
Регистрация: 20.11.2009
Сообщений: 6
По умолчанию

По-конкретней, что не понятно?
Денис_Рассветный вне форума Ответить с цитированием
Старый 23.11.2009, 23:49   #3
IvaniuS
Форумчанин
 
Аватар для IvaniuS
 
Регистрация: 16.04.2007
Сообщений: 225
По умолчанию

короче я понял чо он хочет, ему нада что бы из динамического массива прогой выдер оттуда четные и нечотные числа. набросаю побыстрому:
Код:
var
ar : array of integer;
i:integer;
const
n:=50;
begin
for i:=1 to n do begin
 readln(ar[i]);
if odd(ar[i]) then
writeln(ar[i],' нечотное');
end;
end.
IvaniuS вне форума Ответить с цитированием
Старый 23.11.2009, 23:52   #4
TiK_Tak
 
Регистрация: 23.11.2009
Сообщений: 3
По умолчанию

как создать динамический массив???
TiK_Tak вне форума Ответить с цитированием
Старый 24.11.2009, 02:32   #5
dr.Chas
***
Участник клуба
 
Аватар для dr.Chas
 
Регистрация: 30.07.2007
Сообщений: 1,162
По умолчанию

Мб где криво написано не знаю, тему когда проходили болел

Код:
program Project1;

{$APPTYPE CONSOLE}

type  Pe=^TypElem;
      TypElem=record
        t: integer;
        p: pe;
      end;

      TypChet=record
        t: integer;
        p: pe;
      end;

      TypNeChet=record
        t2: integer;
        p2: pe;
      end;

var Elem, nach1, che, nach2, nechet, nach3: Pe;
    ch: char;

begin
  New(Elem);
  nach1:=Elem;
  Elem^.p:=elem;
  while elem <> nil do
  begin
    writeln('Vvedite chislo: ');
    readln(elem^.t);
    write('povtorit vvod? (y/n) ');
    readln(ch);
    if (ch='n')or(ch='N') then elem:=nil
    else begin
      new(elem^.p);
      elem:=elem^.p;
    end;
  end;

  writeln('dannie spiska: ');
  elem:=nach1;

  New(che);  nach2:=che;

  New(nechet);  nach3:=nechet;
  //repeat
  while elem<>nil do
  begin

    if (elem^.t mod 2=0) then
    begin
      che^.t:=elem^.t;
      New(che^.p);
      che:=che^.p;
    end else
    begin
      nechet^.t:=elem^.t;
      New(nechet^.p);
      nechet:=nechet^.p;
    end;

    write({n,': ', }Elem^.t:5);
    elem:=elem^.p;

  end;
  //until elem=nil;

  che:=nil;    nechet:=nil;

  writeln;
  writeln('----------------------');
  Writeln('Chetnii spisok: ');
  che:=nach2;

  repeat
    Write(che^.t:5);
    che:=che^.p;
  until che=nil;

  writeln;
  writeln('----------------------');
  writeln('ne chetnii spisok: ');
  nechet:=nach3;
  while nechet<>nil do
  begin
    Write(nechet^.t:5);
    nechet:=nechet^.p;
  end;
  //until nechet=nil;

  readln;
end.
И так, в этом коде есть недочёт, он создаёт одну лишнею ячейку памяти, во втором Che и в третьем NeChet списках. Исправляйте сами.
dr.Chas вне форума Ответить с цитированием
Старый 25.11.2009, 01:17   #6
TiK_Tak
 
Регистрация: 23.11.2009
Сообщений: 3
По умолчанию

спасибо!!!
TiK_Tak вне форума Ответить с цитированием
Старый 25.11.2009, 08:17   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Мб где криво написано не знаю,
Ой! Это линейный список а не массив
Динмассив в Паскале через указатели с помошью GetMem создавался (по крайней мере я так всегда делал)
А вот легкий примерчик:
Код:
var p,e:^integer;i:integer;
begin
 getmem(p,Sizeof(integer)*10); {10 элементов динамического массива}
 e:=p;
 for i := 0 to 9 do begin
  e^:=i;
  e:=pointer(integer(e)+Sizeof(integer));
 end;
 e:=p;
 for i := 0 to 9 do begin
  write(e^:5);
  e:=pointer(integer(e)+Sizeof(integer));
 end;
 FreeMemory(p);
 readln;
end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.11.2009, 13:08   #8
dr.Chas
***
Участник клуба
 
Аватар для dr.Chas
 
Регистрация: 30.07.2007
Сообщений: 1,162
По умолчанию

Цитата:
Ой! Это линейный список а не массив
Ну мб я и ошибаюсь, но по-моему в задании ни чего не сказано про массив, а вот про списки написано.
dr.Chas вне форума Ответить с цитированием
Старый 25.11.2009, 13:32   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от dr.Chas
а вот про списки написано.
+1
мне тоже решение через Списки кажется и более логичным и более подходящим по тексту задания из пост #1
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по динамическим структурам Sergy Win Api 2 10.05.2011 13:37
Помогите разобраться в формате данных Tada-YO Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 18.11.2009 20:41
Прошу вашей помощи в реализации программы по динамическим структурам technotamplier Помощь студентам 0 25.10.2009 22:20
помогите разобраться с заданием лабораторной работы tiger Помощь студентам 2 26.09.2009 00:38
Совет с литературой к Структурам данных! phpcreator Помощь студентам 1 19.09.2009 22:30