Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамические списки, Задача на Pascal 
:(
    Опции темы
CyClon
Дата 21.12.2008, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: нет
Всего: 4



Помогите, нужно написать программу, которая принимает последовательность вещественных чисел с клавиатуры в динамический список и потом меняет последний и первый элементы местами.

В какую сторону копать, где можно внятно почитать о динамических списках? Совсем не понял, как они устроены.


--------------------
user posted image
PM   Вверх
Dobermann
Дата 21.12.2008, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 992
Регистрация: 7.1.2008

Репутация: нет
Всего: 0



Цитата(CyClon @  21.12.2008,  11:02 Найти цитируемый пост)
В какую сторону копать, где можно внятно почитать о динамических списках?

Код

type
 pstr=^str;
 str=record
   a:real;
   next:str;
  end;
var
  p,p1:pstr;
  i:byte;
  r: real;
begin
  for i:=1 to 10 do
   begin
    read(r);
    new(p1);
    p1.next:=p;
    p:=p1;
    p.a:=r;
   end;
end.


PM   Вверх
CyClon
Дата 21.12.2008, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: нет
Всего: 4



Спасибо, буду осмысливать smile

Но пока что:

Код
Free Pascal Compiler version 1.0.6 [2002/04/23] for i386
Copyright (c) 1993-2002 by Florian Klaempfl
Target OS: Win32 for i386
Compiling e:\etc\docs\pascal\var6\report_7_1.pas
report_7_1.pas(5,9) Error: Illegal expression
report_7_1.pas(16,8) Error: Illegal qualifier
report_7_1.pas(16,8) Hint: Maybe pointer dereference is missing
report_7_1.pas(16,8) Error: Illegal expression
report_7_1.pas(16,8) Fatal: Syntax error, ; expected but identifier NEXT found
.

Добавлено через 1 минуту и 10 секунд
Спасибо, буду осмысливать smile

Но пока что:

Код
Free Pascal Compiler version 1.0.6 [2002/04/23] for i386
Copyright (c) 1993-2002 by Florian Klaempfl
Target OS: Win32 for i386
Compiling e:\etc\docs\pascal\var6\report_7_1.pas
report_7_1.pas(5,9) Error: Illegal expression
report_7_1.pas(16,8) Error: Illegal qualifier
report_7_1.pas(16,8) Hint: Maybe pointer dereference is missing
report_7_1.pas(16,8) Error: Illegal expression
report_7_1.pas(16,8) Fatal: Syntax error, ; expected but identifier NEXT found
.


--------------------
user posted image
PM   Вверх
volvo877
Дата 21.12.2008, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(CyClon @  21.12.2008,  14:29 Найти цитируемый пост)
Но пока что:
Вот так:

Код
type
 pstr=^str;
 str=record
   a: real;
   next: pstr;
  end;
var
  p, p1: pstr;
  i: byte;
  r: real;
begin
  for i:=1 to 10 do
   begin
    read(r);
    new(p1);
    p1^.next:=p;
    p:=p1;
    p^.a:=r;
   end;
end.
А FPC-то обнови, 2.2.2 уже в ходу...

PM MAIL   Вверх
CyClon
Дата 24.1.2009, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: нет
Всего: 4



volvo877, у меня IDE просто стояла, а там FPC вшит был старый.

Сдал зачеты, экзамен. Вот кстати эта задачка (только сюда препод потом еще заставил процедуру освобождения памяти написать):

Код
program task_7_1;

{ Динамические списки

Используя заданную пользователем динамическую последовательность вещественных
чисел, поменять первый и последний элементы местами

}

type
    plist = ^list;
    list = record
        data : real;
        next : plist;
    end;

var
    first, last, current : plist;
    i, n : byte;
    element, temp : real;

procedure add(element : real);
var
    pointer : plist;
begin
    new(pointer);
    pointer^.data := element;
    pointer^.next := nil;
    if first <> nil then
    begin
        current := first;
        while current^.next <> nil do
            current := current^.next;
        current^.next := pointer;
    end
    else
        first := pointer;
    current := pointer;
end;

procedure display;
begin
    if first = nil then
    begin
        writeLn('List is empty!');
        exit;
    end;
    current := first;
    write('=:');
    while current <> nil do
    begin
        write(' ', current^.data : 0 : 2);
        current := current^.next;
    end;
    writeLn;
end;

begin
    write('N: ');
    readLn(n);
    for i := 1 to n do
    begin
        write(i, ': ');
        readLn(element);
        add(element);
    end;
    last := current;
    display;
    temp := first^.data;
    first^.data := last^.data;
    last^.data := temp;
    display;
    readLn;
end.



--------------------
user posted image
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0716 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.