Лидеры рейтинга

ID: 405049

vsetin

Студент

2825


ID: 401284

Михаил Александров

Советник

905

Россия, Санкт-Петербург


ID: 226425

Konstantin Shvetski

Модератор

662

Россия, Северодвинск


ID: 259041

Алексеев Владимир Николаевич

Мастер-Эксперт

380

Россия, пос. Теплоозёрск, ЕАО


ID: 400669

epimkin

Профессионал

350


ID: 325460

CradleA

Мастер-Эксперт

297

Беларусь, Минск


ID: 137394

Megaloman

Мастер-Эксперт

260

Беларусь, Гомель


8.9.0

20.06.2021

JS: 2.9.2
CSS: 4.5.10
jQuery: 3.6.0
DataForLocalStorage: 2021-06-22 16:46:03-standard


Создание программ на языках Pascal, Delphi и Lazarus.

Администратор раздела: Зенченко Константин Николаевич (Старший модератор)

Консультация онлайн # 160041

Раздел: Pascal / Delphi / Lazarus
Автор вопроса: Korniychug Petro Dmytrovich
Дата: 09.02.2009, 20:45 Консультация закрыта
Поступило ответов: 1

Доброго времени суток! Помогите решить задачу, тема Указатели и динамическая память:
Описать функцию или процедуру, которая: меняет местами первый и последний элементы непустого списка L;

Здравствуйте, Korniychug Petro Dmytrovich!

Программа в приложении.
Коментировал только процедуру modifyList. Программа написана под ТР 7.0.
Удачи!

Приложение:


Зенченко Константин Николаевич

Старший модератор
10.02.2009, 14:14
Мини-форум консультации # 160041
неизвестный

1

= общий =    13.02.2009, 19:10

В методических указаниях к задаче сказано что :Если задание связано со списком, то размер списка неопределен, так как он размещается в динамической памяти. Должен быть признак окончания формирования списка. Отсюда вопрос : что это за признак такой?

q_id

Зенченко Константин Николаевич

Старший модератор

ID: 31795

2

= общий =    13.02.2009, 20:32

На примере одной из подпрограм:

Код
procedure deleteList(var b:isType);
    var
      c:isType;
    begin
      repeat
        c:=b;
        b:=b^.next;
        dispose(c);
      until b=nil;Признак окончания списка константа NIL
    end;

smile smile

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

неизвестный

3

= общий =    13.02.2009, 21:02

А скажите ещё можно ли сделать что б программа каждый раз формировала список разной величины и разного заполнения???

q_id

Зенченко Константин Николаевич

Старший модератор

ID: 31795

4

= общий =    13.02.2009, 21:30

меняете вызов подпрограммы, и получаете удовольствие:

randomize;
createList(a,random(27)+4);


4- это минимальное число с которым работает modifyList(a)
smile

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

неизвестный

5

= общий =    25.02.2009, 00:03

А как сделать чтоб можно было вводить список до того времени пока не введу некоторое слово ( например Stop) и после этого слова начинаеться обмен последнего и первого елементов списка.

q_id

Зенченко Константин Николаевич

Старший модератор

ID: 31795

6

= общий =    25.02.2009, 11:17

b^.data:=random(20); эта строка формирует значения. Вам нужно поменять сам тип переменной, т.е. b^.data должна быть определена как строка. А проверку if b^.data<>'stop' then . . . думаю написать труда не составит.

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

неизвестный

7

= общий =    25.02.2009, 19:55

Извините, но уменя есть ещё вопросы: почему после ввода значений списка список формируется наоборот ( например : я ввожу 4 1 2 6 7 4 3 и мой список записан как 3 4 7 6 2 1 4)

q_id

Зенченко Константин Николаевич

Старший модератор

ID: 31795

8

= общий =    25.02.2009, 20:07

Он построем по стековому принципу, т.е. в голове списка будет всегда последний введенный элемент.

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

неизвестный

9

= общий =    25.02.2009, 20:22

И ещё : я изменил тип переменной data из integer на string заменил строку b^.data:=random(20) на readln(b^.data) но всё же я не могу разобратся с проверкой , я пробовал некоторые комбинации и в результате добился только того что при вводе "стоп" заканчивался ввод данных и выводился список но последним елементом в нём было слово "стоп" (( , подскажыте как организовать проверку.

q_id

Зенченко Константин Николаевич

Старший модератор

ID: 31795

10

= общий =    26.02.2009, 17:10

Так:

Код
 type
    isType=^isList;
    isList=record
      data:string;
      next:isType;
      end;
  var
    a:isType;
  procedure createList(var d:isType);
    var
      b:isType;
      c:string;
    begin
      repeat
        readln(c);
        if c<>'stop' then
          begin
            new(b);
            b^.data:=c;
            b^.next:=d;
            d:=b;
          end;
      until c='stop;
    end;

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Лучшие эксперты раздела

puporev

Профессор

Рейтинг: 132

Зенченко Константин Николаевич

Старший модератор

Рейтинг: 98

Лысков Игорь Витальевич

Мастер-Эксперт

Рейтинг: 0

Асмик Гаряка

Советник

Рейтинг: 0

Орловский Дмитрий

Мастер-Эксперт

Рейтинг: 0

lamed

Академик

Рейтинг: 0