Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на языке Pascal


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

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

lamed
Статус: Профессор
Рейтинг: 3256
∙ повысить рейтинг »
Орловский Дмитрий
Статус: Профессор
Рейтинг: 2562
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2531
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Pascal (Паскаль)

Номер выпуска:1138
Дата выхода:06.11.2010, 20:30
Администратор рассылки:Boriss (Академик)
Подписчиков / экспертов:191 / 183
Вопросов / ответов:1 / 1

Вопрос № 180474: Добрый день дорогие эксперты! Требуется написать на Паскале ABC решение вот этой лабораторной, в которой я 19 вариант. Лабораторная работа # 5 В ней необходимо реализовать модуль...



Вопрос № 180474:

Добрый день дорогие эксперты!
Требуется написать на Паскале ABC решение вот этой лабораторной, в которой я 19 вариант.
Лабораторная работа # 5

В ней необходимо реализовать модуль работы с линейным списком(в моем случае он располагается в динамической памати.
И в конце модуля нужно решить задачу данного варианта... смотрите по таблице номер задачи соответствующего варианта...

Ответ оформить тут как задача на ABC в которой находятся все процедуры из модуля и приведено решение задачи.

Заранее благодарен!

Отправлен: 28.10.2010, 06:46
Вопрос задал: Юдин Евгений Сергеевич (1-й класс)
Всего ответов: 1
Страница вопроса »


Отвечает lamed (Профессор) :
Здравствуйте, Юдин Евгений Сергеевич!
© Цитата: Юдин Евгений Сергеевич
на даный момент борюсь с задачей №8. Пока по задумке решения данной задачи нет! пусть теперь она будет ответом!!!

Так как работающий модуль не был выложен, а других возможностей, кроме ABC, у меня нет {зрение не позволяет}, для решения задачи 8 воспользовался своим же ответом на один из вопросов.

Код:
 program p180474b;

const
ERROR = -MaxInt - 1; // Возвращаемая ошибка, если не найден элемент списка
// только для целых чисел
name_a = 'a.dat'; // файл данных
type
TElem = integer;
TBaseElem = ^TElem; // Тип информационной части
TList = ^TNode; // Представление списка
TNode = record // Звено списка
info: TBaseElem; // Информационная часть
next: TList; // Следующий элемент
end;
TElemFile = file of TElem; // Тип файла для хранения информационных частей

procedure File_Create(name_a: string);
// Создание файла
var
i, n: integer;
file_a : TElemFile;
begin
assign(file_a, name_a);
Randomize;

// Количество элементов задается случайным образом
rewrite(file_a);
for i:= 1 to Random(20)+1 do
if i mod 4 = 0 then
write(file_a, 0)
else
write(file_a, Random(50)-25);
close(file_a);

end;

procedure ZList_Init(var L: TList);
// Инициализация списка с заглавным звеном
var
n: TList;
begin
new(n);
n^.next := nil;
l:= n;
end;

procedure ZList_AddLast(L:TList; e: TElem);
// Добавление элемента в конец списка с заглавным звеном
begin
while L^.next <> nil do
L:= L^.next;
new(L^.next);
L:=L^.next;
new(L^.info);
L^.info^ := e;
L^.next := nil;
end;

procedure Insert_List(L1:TList; var e: TElem; var code: integer);
// Вставка элемента в список с заглавным звеном
// после элемента с номером n
var
p1: TList;
tmp: TList;
begin
p1:= L1^.next;
if (p1 = nil) then
begin
code := -1;
exit;
end
else
begin
new(tmp);
new(tmp^.info);
tmp^.info^ := e;
tmp^.next := p1^.next;
p1^.next := tmp;
p1 := tmp^.next;
code := 0
end;
end;

funct ion List_Length(L:TList): integer;
// Вычисление длины списка с заглавным звеном
var
i: integer;
begin
i:= 0;
L:= L^.next;
while (L <> nil) do
begin
L:= L^.next;
inc(i);
end;
List_Length := i;
end;

procedure ZList_Print(L: TList);
// Печать списка c заглавным звеном
begin
write('<');
L := L^.next;
while (L <> nil) do
begin
write(L^.info^);
if (L^.next <> nil) then write('.');
L:= L^.next;
end;
writeln('>');
end;

procedure List_Read(L: TList; n: integer; var e: TElem);
// Получение элемента №
var
i: integer;
begin
if (n<=0) or (n>List_Length(L)) then
begin
writeln('Вне диапазона');
exit;
end;
for i:= 1 to n do
L := L^.next;
e:= L^.info^;
end;

procedure List_Clear(var L:TList);
// Удале ние списка
var
n, start: TList;
be: TBaseElem;
begin
start:= L;
L := L^.next;
while (L <> nil) do
begin
n:= L;
be := n^.info;
dispose(be);
L := L^.next;
dispose(n);
end;
dispose(start);
end;

procedure FileToList(fname: string; var L: TList);
// Чтение файла в список
var
e: TElem;
f: TElemFile;
begin
assign(f, fname);
if not FileExists(fname) then
exit;
reset(f);
while not eof(f) do
begin
read(f, e);
ZList_AddLast(L, e);
end;
close(f);
end;

var
a: TList; // список
c: char;
i: integer;
len : integer;
e: TElem;

begin // главная программа
write('имя переменной ');
readln(c);

File_Create(name_a);
ZList_Init(a);
FileToList(name_a, a);

writeln('Начальные значения');
write('a=>');
ZList_Print(a);

len := List_Length(a);
write('Многочлен = ');
for i:= 1 to len do
begin
Li st_Read(a, i, e);
if (e<>0) then
begin
if (e>0) and (i>1) then
write('+');
write(e);
if (i<len) then
begin
write('*', c);
if (i<len-1) then
write('^', len-i);
end;
end;
end;
writeln;

List_Clear(a);
readln;
end.

Пример работы
Код:
имя переменной X
Начальные значения
a=><-18.11.-8.0.16.11.18.0.22.16.-12.0.-15.1>
Многочлен = -18*X^13+11*X^12-8*X^11+16*X^9+11*X^8+18*X^7+22*X^5+16*X^4-12*X^3-15*X+1
Если нужны разъяснения по этому решению - задавайте вопросы.
Удачи!

Ответ отправил: lamed (Профессор)
Ответ отправлен: 03.11.2010, 10:50
Номер ответа: 263796

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 263796 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:


  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFPRO.RU, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.22 от 02.11.2010

    В избранное