Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПорядокВыполнения-КР.doc
Скачиваний:
9
Добавлен:
09.02.2015
Размер:
182.27 Кб
Скачать

3. Формальная постановка задачи

Исходные данные

1) Полином P1(x), заданный в упорядоченном разреженном представлении, т. е. последовательность p1  (q1q2, …, qn1), где qk = (ckdk), причём ck и dk – целые, ck  0, dk  0.

2) Полином P2(x), заданный аналогичным образом, т. е. последовательность p2  (q1q2, …, qn2).

3) Операция {+, – }.

Ограничения на исходные данные

В представлении каждого из полиномов ck и dk – целые стандартной точности, ck  0, dk  0 и ( k 1..max(n1, n2): abs(ck)*2  MaxIntType).

Результирующие (выходные) данные

Упорядоченное разреженное представление полинома P3(x) = P1(x)  P2(x) для заданной операции , т. е. последовательность p3  (q1, q2, …, qm3), где 0  m mm2.

Связь выходных данных с исходными данными

Опишем формально связь между выходной последовательностью p3 и двумя входными последовательностями p1, p2. Для этого используем следующие функции над последовательностями.

Пусть p = (q1, q2, …, qn) – непустая последовательность (n  0), тогда

First(p) = q1,

Rest(p) = (q2, q3, …, qn),

Prefix(q0, p) = (q0, q1, q2, …, qn).

Определим также функцию-индикатор пустой последовательности Null(p)  if p=( ) then true else false. Кроме того, для упорядоченной пары чисел, представляющей моном = (cd), определим функции-селекторы coef(q) = c и deg(q) = d, а также функцию-конструктор упорядоченной пары pair(cd) = (cd).

Определим рекурсивную функцию сумма(p1, p2), результатом которой является упорядоченное разреженное представление суммы двух полиномов P1(x) + P2(x), а аргументами  упорядоченные разреженные представления полиномов P1(x) и P2(x):

сумма(p1,p2) 

if Null(p1) then p2

else if Null(p2) then p1

else {последовательности p1, p2 – обе не пусты }

[ Пусть d1=deg(First(p1)), d2=deg(First(p2)),

c1=coef(First(p1)), c2=coef(First(p2)),

тогда

if d1>d2 then Prefix(First(p1), сумма (Rest(p1),p2))

else if d1<d2 then Prefix(First(p2), сумма (p1, Rest(p2)))

else { d1=d2 }

if с1+с2=0

then сумма (Rest(p1),Rest(p2))

else Prefix( pair(c1+c2,d1), сумма (Rest(p1),Rest(p2)))

] {конец пусть-тогда}

Функция Разность(p1,p2) определяется как

Разность(p1,p2)  сумма (p1, минус(p2)),

где в свою очередь функция минус(p) определена рекурсивно

минус(p) if Null(p) then p

else Prefix( pair(coef(First(p)),deg(First(p))), минус(Rest(p))).

4. Спецификация программы

Исходные данные (ИД)

Перечень и основные характеристики ИД:

  1. num – номер наборов данных, натуральное; служит для формирования имен текстовых файлов входных данных inp1_XX.dat , inp2_XX.dat, выходных данных out_XX.dat и промежуточных данных prtcl_XX.dat. Здесь ХХ – это десятичная запись числа num, в случае необходимости дополненная нулем слева;

  2. op – вариант операции над полиномами; op {+, –, минус};

  3. последовательность, задающая первый полином p1  (q1, q2, …, qn1),

где qk = (ck, dk), причем ck и dk – целые стандартной точности, ck  0, dk  0;

  1. если op  минус, то последовательность, задающая аналогичным образом второй полином p2  (q1, q2, … , qn2).

Ограничения на исходные данные:

  1. для num задан диапазон 1  num  99, ограничение сверху обусловлено требованием, что десятичная запись числа num должна содержать не более двух символов;

  2. для коэффициентов мономов ck целые стандартной точности реализуются типом integer;

  3. для показателей степеней мономов dk целые стандартной точности реализуются типом word.

Место и форма представления исходных данных:

  1. num вводится с клавиатуры в процессе диалога, порядок ввода и форма представления описаны в сценарии диалога;

  2. данные, задающие первый полином, вводятся из файла inp1_XX.dat; расположение данных в файле приведено н

    c1  d1

    ck  dk

    cn1  dn1

    Расположение данных в файле inp1_XX.dat

    а рисунке. Значения cи dk задаю тся в формате, соответствующем типу, которому они принадлежат;

  3. данные, задающие второй полином, вводятся из файла inp2_XX.dat; расположение данных в файле аналогично приведенному на рисунке.

Функции программы по обработке исключительных ситуаций

Исполняющая система прекращает выполнение программы, выдавая диагностическое сообщение об ошибке в следующих случаях:

1) если значение num не принадлежит диапазону 1…99;

2) если невозможно открыть для чтения файлы inp1_XX.dat или inp2_XX.dat;

3) если невозможно открыть для записи файлы out_XX.dat или prtcl_XX.dat;

4) если значения коэффициентов мономов ck выходят за границы, определенные для типа integer;

5) если значения показателей степеней мономов dk выходят за границы, определенные для типа word.

Если пары (c, dk) не упорядочены по убыванию dk, то программа выполняет действия по сортировке, выдает диагностическое сообщение о ходе процесса выполнения «Сортировка входных данных…» и продолжает работу.

Выходные данные

Состав выходных данных:

  1. op – вариант операции над полиномами; op {+, –, минус};

  2. последовательность, задающая первый полином p1  (q1, q2, …, qn1);

  3. если op  минус, то последовательность, задающая второй полином p2  (q1, q2, …, qn2);

  4. последовательность p3  (q1, q2, …, qn3), представляющая результат операции op над полиномами p1 и p2.

Место и форма представления выходных данных. Выходные данные выводятся на экран и в файлы out_XX.dat и prtcl_XX.dat, где ХХ – это десятичная запись задаваемого пользователем числа num, в случае необходимости дополненная нулем слева.

1) Если op = +, то на экран выводится сообщение: «Определение суммы двух полиномов»;

2) если op = –, то на экран выводится сообщение: «Определение разности двух полиномов»;

3) если op = минус, то на экран выводится сообщение: «Выполнение операции изменения знака полинома»;

4) каждый полином P(x;n) выводится на экран и в файлы в следующей форме (макет вывода полинома на примере первого полинома, вводимого из файла inp1_XX.dat):

Макет вывода полинома

P(x ;dd  ) 

=

Sddddd * x ^ dd

+

                 dn1

     cn1             dn1

Sddddd * x ^ dd 

+

     ck                dk

Sddddd * x ^ dd 

      c1               d1

Здесь S – позиция для знака отрицательного числа, d – десятичная позиция для коэффициентов ck   и показателей степеней dk мономов.

Сценарий диалога

Общая схема диалога:

1. Вывод заголовка на экран и в файл prtcl_XX.dat:

ПРОГРАММА

для изменения знака полинома или определения суммы или разности двух полиномов

(Исходные данные вводятся из текстовых файлов, результаты выводятся в текстовые файлы)

2. Сцена 1 (выбор варианта исходных данных, выбор варианта операции над полиномами).

3. Сцена 2 (ввод, анализ упорядоченности и вывод параметров первого полинома).

4. Если выбрана операция определения суммы или разности полиномов, то Сцена 3 (ввод, анализ упорядоченности и вывод параметров второго полинома).

5. Сцена 4 (вывод параметров результирующего полинома).

Описание сцен диалога. Описание сцены 1 приведено в табл. П.1.

Таблица П.1

Алгоритм ведения диалога

Сообщения пользователю и его реакция

Вывод запроса

Выберите вариант исходных данных (1…99).

Ввод num

??<Enter>

Вывод запроса

Выберите вариант операции над полиномами:

1 – определение суммы;

2 – определение разности;

3 – изменение знака полинома.

Ввод варианта операции над полиномами

?<Enter>

         ЕСЛИ вариант 1 ТО

         вывод сообщения 2

Текст сообщения:

Определение суммы двух полиномов

         ЕСЛИ вариант 2 ТО

         вывод сообщения 3

Текст сообщения:

Определение разности двух полиномов

         ЕСЛИ вариант 3 ТО

         вывод сообщения 4

Текст сообщения:

Выполнение операции изменения знака полинома

Описание сцены 2 приведено в табл. П.2.

Таблица П.2

Алгоритм ведения диалога

Сообщения пользователю и его реакция

Ввод параметров первого полинома из файла inp1_XX.dat

[Формат файла – см. рисунок]

ЕСЛИ введенные параметры не упорядочены по убыванию степеней мономов

ТО выдача сообщения 5

Текст сообщения:

Сортировка входных данных…

Вывод параметров первого полинома после упорядочения

[Вывод полинома по макету вывода полинома на экран и в файлы]

Описание сцены 3 аналогично описанию сцены 2 для второго полинома. Описание сцены 4 приведено в табл. П.3.

Таблица П.3

Алгоритм ведения диалога

Сообщения пользователю и его реакция

Вывод заголовка (копия в файл prtcl_XX.dat)

РЕЗУЛЬТАТ

Вывод полинома (копия в файлы out_XX.dat и prtcl_XX.dat)

[Вывод полинома по макету вывода полинома]

Отметим, что в прямоугольные рамки заключены поля данных, вводимых пользователем.