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

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

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

Теоретический раздел
Часовой пояс: UTC + 4 часа [ Летнее время ]
MathHelpPlanet.com RSS-лента Математического форума

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




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: Исправить пару ошибок в программах
СообщениеДобавлено: 22 янв 2017, 17:05 
Не в сети
Начинающий
Зарегистрирован:
05 дек 2016, 22: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 сообщение ] 

 Похожие темы   Автор   Ответы   Просмотры   Последнее сообщение 
Не получается исправить ошибку

в форуме MATLAB

Alexandrit84

0

62

17 фев 2017, 17:50

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

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

Raketa

2

247

14 мар 2016, 14:30

Исследование функции - исправить ошибки

в форуме Пределы числовых последовательностей и функций, Исследования функций

Anka11

0

187

30 апр 2013, 15:01

Проверить решение, указать ошибки, исправить их

в форуме Пределы числовых последовательностей и функций, Исследования функций

cflbcn

1

74

28 дек 2016, 13:16

Вычисление функции (все сделано, только исправить ошибки)

в форуме Microsoft Excel

Alexanderrrr

7

650

03 июл 2012, 01:18

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

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

Stasya7

6

215

05 апр 2015, 15:09

Коррекция ошибок в регрессионных моделях

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

Bani

0

135

24 ноя 2013, 18:15

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

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

ymva

0

178

27 окт 2015, 17:53

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

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

oldblood

4

203

02 фев 2016, 00:58

Найти наивероятнейшее число ошибок при четырех измерениях

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

LenVanych

2

1610

28 окт 2012, 12:18


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



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

Сейчас этот форум просматривают: Yandex [bot] и гости: 5


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

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

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

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