Программа на Delphi (с процедурами-заглушками, кроме процедур ввода и вывода).
Имена входного и выходного файлов передаются как параметры программы: Первый – имя файла с исходными данными Второй – имя файла для вывода исходных данных и результатов
*********************Файл основной программы Project2.dpr**************************
program Project2;
{$APPTYPE CONSOLE}
uses SysUtils,Unit1; var dat,res:TextFile; a:Matrix; n:byte; d,max,min,p:real; f1,f2:boolean;
begin AssignFile(dat,paramstr(1)); Reset(dat); AssignFile(res,paramstr(2)); Rewrite(res); {Ввод из файла dat} InPut(dat,n,p,a); {Проверка n} Checkn(dat,res,n); { Проверка p} Checkp(dat,res,p); { Проверка матрицы} CheckArray(dat,res,n,f1,a); {вывод исходной матрицы} OutPutArray(res,n,p,a); {поиск максимума} Maximum(n,a,max); {поиск минимума} Minimum(n,a,min); {сравнение разности с p} Compare(d,p,max,min,f2); {изменение матрицы} Ending(n,f2,A); {вывод измененной матрицы или вывод о невозможности сделать это} OutPut(res,a,f2,n); CloseFile(dat); CloseFile(res); writeln('Look through your results in res.txt'); writeln('Press any key'); readln end. ****************Модуль Unit.pas со всеми процедурами и функциями********************** unit Unit1;
interface uses SysUtils; const nmax=5;
type Matrix=array[1..nmax,1..nmax] of real; procedure InPut(var dat:TextFile; var n:byte; var p:real; var a:Matrix);
procedure Checkn(var dat:TextFile; var res:TextFile; var n:byte);
procedure Checkp(var dat:TextFile; var res:TextFile; var p:real);
procedure CheckArray(var dat:TextFile; var res:TextFile; n:byte; f1:boolean; a:Matrix);
procedure OutPutArray(var res:TextFile;n:byte;p:real;out a:matrix);
procedure Maximum(var n:byte; var a:Matrix; out max:real);
procedure Minimum(var n:byte; var a:Matrix; out min:real);
procedure Compare(var d:real;var p:real; var max,min:real;var f2:boolean);
procedure Ending(var n:byte; out A:matrix);
procedure OutPut(var res:TextFile; var a:Matrix; var n:byte);
implementation procedure InPut(var dat:TextFile; var n:byte; var p:real; var a:Matrix); var i,j:byte; begin readln(dat,n); readln(dat,p); for i:=1 to n do begin for j:=1 to n do read(dat,A[i,j]); end; end; procedure Checkn(var dat:TextFile; var res:TextFile; var n:byte); begin
end;
procedure Checkp(var dat:TextFile; var res:TextFile; var p:real); begin
end;
procedure CheckArray(var dat:TextFile; var res:TextFile; n:byte; f1:boolean; a:Matrix); var i,j:byte; begin
end;
procedure OutPutArray(var res:TextFile;n:byte;p:real;out a:matrix); var i,j:byte; begin writeln(res,’Исходные данные’); writeln(res,'p= ',p:5:1); writeln(res,’Квадратная матрица ',n:1,'-ого порядка'); writeln(res); for i:=1 to n do begin for j:=1 to n do write(res,A[i,j]:3:1,' '); writeln(res); end; writeln(res); end;
procedure Maximum(var n:byte; var a:Matrix; out max:real); var i,j:byte; begin
end;
procedure Minimum(var n:byte; var a:Matrix; out min:real); var i,j:byte; begin
end;
procedure Compare(var d:real;var p:real; var max,min:real;var f2:boolean); var i,j:byte; begin
end;
procedure Ending(var n:byte;out A:matrix); var i,j:byte; begin
end;
procedure OutPut(var res:TextFile; var a:Matrix;var n:byte); var i,j:byte; begin
end.
Абстракция А0.5 1.Условие. Проверка массива 2.Уточненная постановка задачи. Данаквадратная матрица A из n строк и столбцов. Узнать, есть ли в массиве элементы, модуль которых больше 25.Если есть, то вывести сообщение об этом и прекратить работу программы. 3.Примеры. Тест 3,4: есть элемент, модуль которого больше 25 Остальные тесты - нету Таблица данных
5.Входная форма. нет ввода/вывода
Выходная форма По обр.9.
Аномалии нет ввода/вывода Тесты Тест #3,4-есть элемент, по модулю больший 25; Остальные тесты – нету. Метод
Пусть f1=
Предположим сначала, что такого элемента в матрице нет (f1:=true). Затем будем просматривать строки, начиная с первой (i:=1) Пока не просмотрены все (i≤n) и не найден такой элемент (f1=true) В каждой строке будем просматривать элементы, начиная с первого (j:=1) Пока не просмотрены все (j≤n) и не найден такой элемент (f1=true) Если рассматриваемый элемент Aij по модулю больше 25 То искомый элемент найден! (f1:=false) Запоминаем его местонахождение (i:=i; j:=j) Переходим к следующему элементу в строке (j:=j+1) Переходим к следующей строке
Если f1=true, то продолжаем работу программы, иначе прекращаем работу программы.
©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.
|