Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Зайцев М. Г. / 3 семестр Зайцев М.Г. РГР 4 вариант.docx
Скачиваний:
13
Добавлен:
02.01.2020
Размер:
46.64 Кб
Скачать

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«Новосибирский государственный технический университет»

Факультет бизнеса

Кафедра экономической информатики

Расчётно-графическая работа

по дисциплине «Информатика и программирование»

Выполнила:

студентка ФБИ – 22

Проверил: Зайцев М.Г.

Новосибирск 2013

Оглавление

1.Вариант задания 3

2.Текст программ на Object Pascal 4

3.Тестовые наборы данных для тестирования типа данных 22

  1. Вариант задания

Упорядочить в заданном порядке записи типизированного файла с помощью упорядоченного списка.

Таблица 1. Вариант задания.

Номер

Варианта

Тип записей

Упорядочение

4

T = record num, denom: real end;

- простые дроби;

по убыванию

Для выполнения работы вам необходимо реализовать динамическую информационную структуру – упорядоченный список.

Порядок выполнения

  1. В режиме консольного приложения в отдельном модуле UOrderedList:

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

  • протестируйте каждую операцию. Тестовые наборы поместите в таблицу следующего вида:

  1. Создайте новое консольное приложение и подключите к нему разработанный модуль UOrderedList.

  2. В головной программе консольного приложения (файл с расширением dpr) выполните следующее:

  • создайте типизированный файл на диске (тип записей определяется вашим вариантом);

  • заполните файл записями;

  • выведите содержимое файла на экран;

  • создайте пустой упорядоченный список;

  • перепишите в него записи из файла;

  • удалите файл;

  • создайте новый файл;

  • перепишите в него записи из упорядоченного списка;

  • выведите содержимое файла на экран;

  • проанализируйте результат.

  1. Текст программ на Object Pascal

Текст модуля uFrac

unit UFrac;

interface

uses SysUtils;

type

Frac=record

num,denom:integer;

end;

PFrac=^Frac;

//------------------Ввод дроби--------------------------------------------------

procedure InputF(var a:Frac);

//------------------Операция сложения-------------------------------------------

function AddF(a,b:Frac):Frac;

//------------------Операция вычитания------------------------------------------

function SubtF(a,b:Frac):Frac;

//------------------Операция умножения------------------------------------------

function MultF(a,b:Frac):Frac;

//------------------Операция деления--------------------------------------------

function DivF(a,b:Frac):Frac;

//------------------Проверка на равенство---------------------------------------

function EqualF(a,b:Frac):boolean;

//------------------Дробь в строку----------------------------------------------

function FracToStr(a:Frac):string;

//------------------Больше------------------------------------------------------

function FindIfBigger(a,b:Frac):boolean;

//------------------Меньше------------------------------------------------------

function FindIfSmaller(a,b:Frac):boolean;

implementation

//------------------Нахождение НОД числит. и знаменат.--------------------------

function FindNOD(a,b:integer):integer;

var x:integer;

begin

a:=abs(a);

if a>b then begin

repeat

x:=b;

b:=a mod b;

a:=x;

until b=0;

result:=a;

end

else begin

repeat

x:=a;

a:=b mod a;

b:=x;

until a=0;

result:=b;

end;

end;

//------------------Сокращение дроби--------------------------------------------

procedure ReductF(var a:Frac);

var

nod:integer;

begin

nod:=FindNod(a.num,a.denom);

a.num:=a.num div nod;

a.denom:=a.denom div nod;

end;

//------------------------------------------------------------------------------

procedure InputF(var a:Frac);

begin

write('числитель: ');readln(a.num);

write('знаменатель: ');readln(a.denom);

ReductF(a);

end;

//------------------Проверка числителя на значение 0----------------------------

function CheckIfZero(a:Frac):boolean;

begin

if a.num=0 then result:=TRUE

else result:=FALSE;

end;

//------------------------------------------------------------------------------

function AddF(a,b:Frac):Frac;

begin

result.num:=a.num*b.denom+b.num*a.denom;

result.denom:=a.denom*b.denom;

ReductF(result);

if not CheckIfZero(result) then

ReductF(result);

end;

//------------------------------------------------------------------------------

function SubtF(a,b:Frac):Frac;

begin

result.num:=a.num*b.denom-b.num*a.denom;

result.denom:=a.denom*b.denom;

if not CheckIfZero(result) then

ReductF(result);

end;

//------------------------------------------------------------------------------

function MultF(a,b:Frac):Frac;

begin

result.num:=a.num*b.num;

result.denom:=a.denom*b.denom;

ReductF(result);

end;

//------------------------------------------------------------------------------

function DivF(a,b:Frac):Frac;

begin

result.num:=a.num*b.denom;

result.denom:=a.denom*b.num;

ReductF(result);

end;

//------------------------------------------------------------------------------

function EqualF(a,b:Frac):boolean;

begin

a.num:=a.num*b.denom;

b.num:=b.num*a.denom;

if a.num=b.num then result:=TRUE

else result:=FALSE;

end;

//------------------------------------------------------------------------------

function FindIfBigger(a,b:Frac):boolean;

begin

a.num:=a.num*b.denom;

b.num:=b.num*a.denom;

if a.num>b.num then result:=TRUE

else result:=FALSE;

end;

//------------------------------------------------------------------------------

function FindIfSmaller(a,b:Frac):boolean;

begin

a.num:=a.num*b.denom;

b.num:=b.num*a.denom;

if a.num<b.num then result:=TRUE

else result:=FALSE;

end;

//------------------------------------------------------------------------------

function FracToStr(a:Frac):string;

begin

result:='';

if (abs(a.num)=a.denom) or (a.denom=1) then result:=result+IntToStr(a.num) else

if a.num<>0 then

result:=result+IntToStr(a.num)+'/'+IntToStr(a.denom)

else result:=result+'0';

end;

//------------------------------------------------------------------------------

end.

Соседние файлы в папке Зайцев М. Г.