Методы программирования: Методическое пособие для выполнения лабораторных работ, страница 2

Ø  книги

§ название

§ автор

§ год издания

§ издательство

§ номер полки

Ø газеты

§ название

§ год издания

§ месяц

§ день

§ номер полки

Ø журналы

§ название

§ год издания

§ номер выпуска

§ номер полки


Метод

Хранение информации должно осуществляться в одном типизи­ро­ван­ном файле. При этом для описания и хранения сведений о конкретных из­да­ниях нужно использовать такие типы данных, как  записи с вариантными  полями.

Интерфейс программы должен содержать меню, предо­ставляющее поль­зователю доступные действия, такие как ввод, редактирование, про­смотр, удаление данных, а также выход из программы.

Можно написать две программы: одна осуществляет ввод информации в файл, а другая — поиск и редактирование в уже созданном  и запол­нен­ном файле.

Параметры поиска должны задаваться программой с помощью систем меню.

Требования к реализации

Язык реализации – Паскаль.

Ниже приводится пример описания структур данных, используемых в программе:

type

   edition  = ( book, newspaper, magazine);

   publication = record

       name : string;             { — название        }

       year : integer;            { — год издания     }

       shelf : word;              { — номер полки     }

       case kind : edition of     { — вид издания     }

       book :                    { для книги:        }

 ( author  : string[20];   { — автор           }

          publishers : string[10] { — издательство}

         );

       newspaper:                 { для газеты:       }

    ( day   : 1..31;          { — день            }

      month : 1..12           { — месяц           }

       );

 magazine :                { для журнала:      }

 ( issue : byte)           { — номер выпуска   }

   end;               

var

   f : file of  publication;

Лабораторная работа № 4.  Системы счисления

Задание

Написать программу, которая переводит вещественное число из одной системы счисления в другую. Использовать  алгоритмы перевода для целой и вещественной частей числа, описанные в [1].

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

На вход программе подаются:

b1 — целое число, основание входной системы счисления (2 £ b1 £ 16),

b2 — целое число, основание выходной системы счисления (2 £ b2 £ 16),

S — строка, представляющая собой последовательность цифр (запись чис­ла в системе счисления с основанием b1).

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

Нужно выдать на экран запись заданного числа в системе счисления с основанием b2.

Метод

Введем следующие обозначения:

число(c) – функция, выдающая числовое значение, соответствующее ли­тере c, обозначающей цифру в записи числа в некоторой системе счисления, на­при­мер, число(’1’) = 1, число(’B’) = 11.

символ(k) – для целого числа k выдает литеру, обозначающую соот­ветствующую данному числу цифру, например: символ(7)=’7’, символ(11) = ’B’.

Шаг 1. Разделить входную строку S на две части: строку S1, содержащую целую часть записи числа, и строку S2, содержащую дробную часть.  S = S1.S2 (дробная часть может отсутствовать). Будем считать, что нумерация в строках начинается с 1.

Шаг 2. Перевод целой части числа из b1-с.с. в b2-с.с.

Пусть n1 — длина строки S1, d1 — массив целых чисел.

По схеме Горнера найти значение числа и записать в переменную N:

N := 0;

цикл по i от 1 до n1 с шагом 1

               N := N * b1 + число(S1[i]);

      конец цикла

Найти запись числа N в системе счисления с основанием b2:

если N = 0

то

   начало

      выдать_на_экран(’0’);

      переход на Шаг 3;

   конец

r1 := 1; //количество цифр в выходной записи числа

пока N ¹ 0 выполнять

  d1[r1] := N mod b2; //остаток от деления на b2

        N := N div b2;  //целая часть от деления на b2

        r1 := r1 + 1;

конец пока

цикл по i от r1-1 до 1 с шагом –1

         выдать_на_экран(символ(d1[i]));

      конец цикла

Шаг 3. Перевод дробной части числа из b1-с.с. в b2-с.с.

Пусть n2 — длина строки S2, K — максимальное количество знаков после запятой.