Дискуссионный математический форумМатематический форум
Математический форум Math Help Planet

Обсуждение и решение задач по математике, физике, химии, экономике

Теоретический раздел
Часовой пояс: UTC + 3 часа [ Летнее время ]
новый онлайн-сервис
число, сумма и дата прописью

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: Исправить пару ошибок в программах
СообщениеДобавлено: 22 янв 2017, 16:05 
Не в сети
Начинающий
Зарегистрирован:
05 дек 2016, 21:58
Сообщений: 7
Откуда: Томск
Cпасибо сказано: 0
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Программирование на языке ABCPascal или Turbo Pascal.

Нужна небольшая помощь по исправлению программ. Тема Динамические Структуры Данных (Работа с линейными списками).

Условия задач: Используйте линейные списки для хранения последовательности чисел. Опишите процедуры или функции для решения следующих задач.
а) Перенести в начало непустого списка его последний элемент;
б) Добавить в конец списка L1 все элементы списка L2;
Вот готовые решения программ:
a)
type  PRec=^TRec; //указатель на запись
TRec= record //тип записи
mint: integer; //число
mnext:PRec; //указатель на следующую запись
end;
procedure Perenos(var List:PRec); //перемещение элемента
var p,g:PRec; //объявляются два указателя
y:integer;
begin

p:=List; //указатель указывает на голову списка
While Assigned(p^.mnext) do //перемещение по списку
begin
g:=p; //текущий элемент
p:=p^.mnext; //следующий элемент
end;
y:=p^.mint; //извлекаем число
g^.mnext:=nil; //отцепляем элемент
Dispose(p); //освобождаем память
New(p); //создаем новую переменную-запись
p^.mint:=y; //размещаем число
p^.mnext:=List; //указатель на предыдущую запись
List:=p; //текущая запись в голове
end;
procedure ToList(var List:PRec; ax:integer); //помещение числа в список
var p:PRec; //объявляется указатель
begin
New(p); //создаётся динамическая переменная-запись
p^.mint:=ax; //размещается число
p^.mnext:=List; //цепляем предыдущую запись к новой записи
List:=p; //голова указывает на новую запись
end;
procedure PrintList(List:PRec); //печать на экран
var p:PRec;
begin
p:=List; //указатель указывает на голову списка
While Assigned(p) do //пока список не пуст
begin
Write(p^.mint:4); //выводится число
p:=p^.mnext; //переход на следующий элемент
end;
Writeln;
Writeln;
end;
var i,x,n: integer;
L: PRec;
begin
L:=nil; //список пуск
Randomize; //генератор случайных чисел
Write('Колличество элементов в L= '); //всего элементов
Readln(n);
for i:=1 to n do
begin
x:=Random(50)+1; //получаем число
ToList(L,x); //проседура наполнения списка
end;
Writeln;
PrintList(L); //процедура вывода на экран
Perenos(L); //процедура перемещения
PrintList(L);
Readln;
end.

б)
type  PRec=^TRec;
TRec= record
mint: integer;
mnext:PRec;
end;
procedure Vvod(var List:PRec; ay:integer); //процедура добавления
var p,t:PRec;
begin
p:=List; //указатель на голову первого списка
While Assigned(p^.mnext) do //находим последний элемент
p:=p^.mnext;
New(t); //создаём динамическую переменную-запись
t^.mint:=ay; //размещаем элемент из второго списка
//вставляем в конец списка
t^.mnext:=p^.mnext; //связываем текущий со следующим
p^.mnext:=t; //связываем предыдущий с текущим
end;
procedure ListToList(var List1:PRec; List2:PRec);
var g:PRec;
y:integer;
begin
g:=List2; //указатель на голову второго списка
While Assigned(g) do
begin
y:=g^.mint; //берём элемент
Vvod(List1,y); //процедура добавления к первому списку
g:=g^.mnext; //переход на следующий элемент
end;
end;
procedure ToList(var List:PRec; ax:integer);
var p:PRec;
begin
New(p);
p^.mint:=ax;
p^.mnext:=List;
List:=p;
end;
procedure PrintList(List:PRec);
var p:PRec;
begin
p:=List;
While Assigned(p) do
begin
Write(p^.mint:4);
p:=p^.mnext;
end;
Writeln;
Writeln;
end;
var i,x,n: integer;
L1,L2: PRec;
begin
L1:=nil;
L2:=nil;
Randomize;
Write('Количество элементов в L1= ');
Readln(n);
for i:=1 to n do
begin
x:=Random(50)+1;
ToList(L1,x); //наполнение первого списка
end;
Write('Количество элементов в L2= ');
Readln(n);
for i:=1 to n do
begin
x:=Random(50)+100;
ToList(L2,x); //наполнение второго списка
end;
Writeln;
PrintList(L1); //вывод на экран первого списка
PrintList(L2); //вывод на экран второго списка
ListToList(L1,L2); //объединение списков
PrintList(L1); //вывод на экран объединённого списка
Readln;
end.

Возникает проблема с процедурой Assigned в обоих частях программы. Может кто нибудь помочь это исправить?

Вернуться к началу
 Профиль  
Cпасибо сказано 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему      Страница 1 из 1 [ 1 сообщение ]

 Похожие темы   Автор   Ответы   Просмотры   Последнее сообщение 
Исправить

в форуме Дифференциальные и Интегральные уравнения

tanyhaftv

0

169

22 июн 2018, 02:29

Интеграл ошибок

в форуме Интегральное исчисление

Stasya7

6

464

05 апр 2015, 14:09

Исправить ошибки в маткаде

в форуме MathCad

egor29

1

439

06 май 2021, 10:31

Случайные величины. Исправить

в форуме Теория вероятностей

Museums

24

815

24 апр 2021, 23:57

Не получается исправить ошибку

в форуме MATLAB

Alexandrit84

0

343

17 фев 2017, 16:50

Оценка вероятности ошибок

в форуме Теория вероятностей

BillyJinks

1

354

18 янв 2018, 20:30

Задания комбинаторики...(проверить или исправить что не так)

в форуме Комбинаторика и Теория вероятностей

Raketa

2

470

14 мар 2016, 13:30

Исправить задание по сложении вероятностей

в форуме Теория вероятностей

William_

2

307

22 фев 2021, 19:49

Исправление ошибок в кодовых словах

в форуме Дискретная математика, Теория множеств и Логика

ymva

0

384

27 окт 2015, 16:53

Показатель значимости выявленных ошибок

в форуме Математическая статистика и Эконометрика

oldblood

4

601

01 фев 2016, 23:58


Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Яндекс.Метрика

Copyright © 2010-2023 MathHelpPlanet.com. All rights reserved