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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2014, 10:35   #11
RomaBayn
Пользователь
 
Регистрация: 24.10.2014
Сообщений: 10
По умолчанию

Вот сделал исправьте меня где не правильно...
Program ex1;
uses crt;
type Ptr=^count;
count=Record
Key:integer;
Nexttr;
end;
var p,q,first,ltr;
n,i,j,k:integer;
begin
randomize;
//создаем исходный список
repeat
write('Размер списка n>1 n=');
readln(n);
until n>1;
new(p);
first:=p;
p^.next:=nil;
p^.key:=0+random(99);
q:=p;
for i:=2 to n do
begin
new(p);
p^.key:=1+random(5);
p^.next:=nil;
q^.next:=p;
q:=p;
end;
///выводим его на экран
writeln('Исходный список');
p:=first;
while (p<>nil) do
begin
write(p^.key,' ');
p:=p^.next;
end;
writeln;
///вставить после каждого четного элемента,звено содержащее количество звеньев с нечетными элементами идущими перед ними
p:=first;
while p<>nil do
begin
k:=p^.key; //смотрим значение
if((n mod 2)<>0) then //если не четное
begin
for j:=1 to k do //ставляем
begin
new(l);
q:= p^.next;
p^.next:=l;
l^.next:=q;
l^.key:=0;
p:=p^.next;
end;
end
else p:=p^.next; //если не четное дальше




/// вывод списка
p:=first; while p<>nil do begin
p:=p^.next;
end;
end.
RomaBayn вне форума Ответить с цитированием
Старый 07.11.2014, 11:37   #12
RomaBayn
Пользователь
 
Регистрация: 24.10.2014
Сообщений: 10
По умолчанию

Как дальше доделать?
Код:
program ex1;
uses crt;
type Ptr = ^count;
  count = record
    Key: integer;
    Next: ptr;
  end;
var p, q, first, l: ptr;
  n, i, j, k: integer;
begin
  randomize;
//создаем исходный список
  repeat
    write('Размер списка n>1 n=');
    readln(n);
  until n > 1;
  new(p);
  first := p;
  p^.next := nil;
  p^.key := 0 + random(99);
  q := p;
  for i := 2 to n do
  begin
    new(p);
    p^.key := 0 + random(100);
    p^.next := nil;
    q^.next := p;
    q := p;
  end;
///выводим его на экран
  writeln('Исходный список');
  p := first;
  while (p <> nil) do
  begin
    write(p^.key, ' ');
    p := p^.next;
  end;
  writeln;
///вставить после каждого четного элемента,звено содержащее количество звеньев с нечетными элементами идущими перед ними
  p := first;
  while p <> nil do
  begin
    k := p^.key; //смотрим значение
    if ((n mod 2) <> 0) then //если четное
    begin
      for j := 1 to k do //ставляем
      begin
        new(l);
        q := p^.next;
        p^.next := l;
        l^.next := q;
        l^.key := 0;
        p := p^.next;
      end;
    end
    else p := p^.next; //если четное дальше

    /// вывод списка
    p := first; while p <> nil do begin
      p := p^.next;
    end;
  end;
end.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 07.11.2014 в 15:23.
RomaBayn вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сформировать список из N целочисленных случайных элементов newbieee Паскаль, Turbo Pascal, PascalABC.NET 2 28.10.2014 12:40
Сформировать новый односвязный список с элементов существующего списка Splitty Общие вопросы C/C++ 0 15.12.2013 14:43
Дан массив из n элементов. Удалить из массива все элементы, встречающиеся ровно два раза Koroleva_E Помощь студентам 0 02.05.2013 13:50
Сформировать список целых чисел и удалить из него все числа меньше 0 bwitcher Помощь студентам 0 23.03.2013 16:42