![]() Главная страница Случайная лекция ![]() Мы поможем в написании ваших работ! Порталы: БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика ![]() Мы поможем в написании ваших работ! |
Тестовые примеры
Входные данные: Файл F1 1 2 3 4 5 6 -3 4 -6 0 0 4 3 4 -5 Файл F2 2 3 4 5 6 -4 -5 -10 3 4 -4 2 -1 0 3 5 Выходные данные:
В файле F1 положительных 10 В файле F1 отрицательных 3 В файле F2 положительных 10 В файле F2 отрицательных 5 Матрица A1 имеет размерность: 4 Матрица A2 имеет размерность: 2 Матрица A1 после формирования: 1 2 3 4 5 6 4 4 3 4 2 3 4 5 6 3 Матрица A2 после формирования: -3 -6 -5 -4 В матрице A1 больше четных Максимум файла F1:6 Матрица A1 после формирования: 6 2 3 4 5 6 4 4 3 4 6 3 4 5 6 6 Блок-схема
Листинг программы на Pascal program MaxMInExch; const L=10; type T2M = array[1.. L,1..L] of integer; Tname = string[4]; TF = file of integer; var A1,A2: T2M; F1,F2 :TF; N1,N2,i1,i2,j1,j2:byte; maxF1,maxF2,Npol1,Notr1,kchet1,kchet2,Npol2,Notr2:integer;
// процедура для ввода файла procedure VvodF(var F:TF; const name:Tname); var buf:integer; begin rewrite(F); writeLn('введите первую компоненту файла ', name); writeLn('999 - окончание ввода'); readLn(buf); while buf<>999 do begin write(F,buf); writeLn('введите следующую компоненту:'); readLn(buf); end; end;
// процедура для вывода файла procedure VivodF(var F:TF; const name:Tname); var buf:integer; begin reset(F); writeLn('Выводим файл ', name); while not EOF(F) do begin read(F,buf); write(buf:5); end; writeLn; end;
// процедура для подсчета числа положительных и отрицательных в файле procedure PodschetPolOtr(var F:TF; var Npol,Notr: integer); var kP,kO:byte; buf:integer; begin reset(F); kP:=0; // положительные kO:=0; // отрицательные while not EOF(F) do begin read(F,buf); if buf>0 then inc(kP) else if buf<0 then inc(kO); end; // передаем полученные значения в глобальный модуль Npol:=kP; Notr:=kO; end;
// функция поиска максимума в файле function MaxInF(var F:TF):integer; var max,buf:integer; begin reset(F); read(F,max); while not EOF(F) do begin read(F,buf); if buf>max then max:=buf; end; MaxInF:=max; end;
// процедура для вывода матрицы procedure VivodMx(const A:T2m; const N,M: byte; const name:Tname); var i,j:byte; begin writeLn('Матрица ',name,' после формирования:'); for i:=1 to N do begin for j:=1 to M do write(A[i,j]:4); writeLn; end; end;
// функция для подсчета числа четных в матрице function PodschetChet(const A:T2m; const N,M:byte):integer; var kCh:integer; i,j:byte; begin kCh:=0; // четные for i:=1 to N do for j:=1 to M do if A[i,j] mod 2 = 0 then inc(kCh); // передаем полученные значения в глобальный модуль PodschetChet := kCh; end;
// замена главной диагонали матрицы на ch procedure ZamenaDiag(var A:T2m; const N: byte; const ch:integer); var i:byte; begin for i:=1 to N do A[i,i]:=ch; end;
// формирование матриц из файла procedure formMxFromFile(var F:Tf; var A1,A2:T2m; var i1,j1,i2,j2:byte); var buf:integer; begin reset(F); while not EOF(F) do begin read(F,buf); if buf>0 then begin inc(j1); if j1>N1 then begin j1:=1; inc(i1); end; A1[i1,j1]:=buf; end; if buf<0 then begin inc(j2); if j2>N2 then begin j2:=1; inc(i2); end; A2[i2,j2]:=buf; end; end; end;
// основная программа begin cls; // инициализация файла F1 Assign(F1,'F1.dat'); VvodF(F1,'F1'); // инициализация файла F2 Assign(F2,'F2.dat'); VvodF(F2,'F2'); VivodF(F1,'F1'); VivodF(F2,'F2'); PodschetPolOtr(F1, Npol1, Notr1); writeLn('в файле F1 положительных ', Npol1); writeLn('в файле F1 отрицательных ', Notr1); PodschetPolOtr(F2, Npol2, Notr2); writeLn('в файле F2 положительных ', Npol2); writeLn('в файле F2 отрицательных ', Notr2); N1:=trunc(sqrt(Npol1+Npol2)); writeLn('матрица A1 имеет размерность: ', N1); N2:=trunc(sqrt(Notr1+Notr2)); writeLn('матрица A2 имеет размерность: ', N2);
i1:=1; j1:=0; i2:=1; j2:=0; formMxFromFile(F1,A1,A2,i1,j1,i2,j2); formMxFromFile(F2,A1,A2,i1,j1,i2,j2); VivodMx(A1,N1,N1,'A1'); VivodMx(A2,N2,N2,'A2'); if PodschetChet(A1,N1,N1)>PodschetChet(A2,N2,N2) then begin writeLn('в матрице A1 больше четных'); maxF1:=MaxInF(F1); writeLn('максимум файла F1:',maxF1); ZamenaDiag(A1,N1,maxF1); VivodMx(A1,N1,N1,'A1'); end else begin writeLn('в матрице A2 больше четных'); maxF2:=MaxInF(F2); writeLn('максимум файла F2:',maxF2); ZamenaDiag(A2,N2,maxF2); VivodMx(A2,N2,N2,'A2'); end; close(F1); close(F2); end.
Дата добавления: 2015-06-30; просмотров: 311; Нарушение авторских прав ![]() Мы поможем в написании ваших работ! |