Студопедия

Главная страница Случайная лекция


Мы поможем в написании ваших работ!

Порталы:

БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика



Мы поможем в написании ваших работ!




Тестовые примеры

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

Файл 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; Нарушение авторских прав




Мы поможем в написании ваших работ!
lektsiopedia.org - Лекциопедия - 2013 год. | Страница сгенерирована за: 0.005 сек.