Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры ОАиП(программа).docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
78.14 Кб
Скачать

Задача 118

program pr118;

{118. Дана матрица А, имеющая 30 строк и 10 столбцов,

содержащая оценки группы за первый семестр.

Определить средний балл студентов группы по каждому предмету.}

Type

tmas2=array [1..30,1..10] of byte;

var

i:byte;

a:tmas2;

fout:text;

procedure VvodM(filename:string; Var a:tmas2);

var

fin:text;

i,j: byte;

begin

assign(fin,filename);

reset(fin);

for i:=1 to 30 do

for j:=1 to 10 do

read(fin,a[i,j]);

close(fin);

end;

procedure VivodM(filename:string; a:tmas2);

var

fout:text;

i,j:byte;

begin

assign(fout,filename);

rewrite(fout);

writeln(fout,'Ishodnye dannye:');

for i:=1 to 30 do

begin

for j:=1 to 10 do

write(fout,a[i,j],' ');

writeln(fout);

end;

close(fout);

end;

function AvMark(i:byte; a:tmas2): real;

var

j:byte;

sum: integer;

begin

sum:=0;

for j:=1 to 30 do

sum:=sum+a[j,i];

AvMark:=sum/30;

end;

begin

VvodM('L7_IN.TXT',a);

VivodM('L7_OUT.TXT',a);

assign(fout,'L7_OUT.TXT');

append(fout);

writeln(fout,'Srednii bally studentov:');

for i:=1 to 10 do

Writeln(fout,i,' predmet:', ' Sredniy ball =',AvMark(i,a):0:3);

close(fout);

end.

Задача 119

program pr119;

{119. Дана матрица А, имеющая 30 строк и 10 столбцов,

содержащая оценки группы за первый семестр.

Подсчитать количество неуспевающих студентов (имеются оценки 0,1,2 или 3).}

Type

tmas2=array [1..30,1..10] of byte;

var

a:tmas2;

fout:text;

procedure VvodM(filename:string; Var a:tmas2);

var

fin:text;

i,j: byte;

begin

assign(fin,filename);

reset(fin);

for i:=1 to 30 do

for j:=1 to 10 do

read(fin,a[i,j]);

close(fin);

end;

procedure VivodM(filename:string; a:tmas2);

var

fout:text;

i,j: byte;

begin

assign(fout,filename);

rewrite(fout);

writeln(fout,'Ishodnye dannye:');

for i:=1 to 30 do

begin

for j:=1 to 10 do

write(fout,a[i,j],' ');

writeln(fout);

end;

close(fout);

end;

Procedure Count(a:tmas2);

var

i,j,k: byte;

fl: boolean;

begin

k:=0;

for i:=1 to 30 do

begin

fl:=false;

for j:=1 to 10 do

if a[i,j]<4 then

fl:=true;

if fl then

inc(k);

end;

writeln(fout,'Kolichestvo neuspevayuschih= ',k);

end;

begin

VvodM('L7_IN.TXT',a);

VivodM('L7_OUT.TXT',a);

assign(fout,'L7_OUT.TXT');

append(fout);

Count(a);

close(fout);

end.

Задача 120

program pr120;

{120. Если все элементы какой-либо строки данной матрицы равны между собой,

то все элементы такой строки заменить нулями.}

Type

tmas2=array [1..10,1..10] of integer;

var

m,n,i,j:byte;

a:tmas2;

fout:text;

procedure VvodM(filename:string; Var a:tmas2);

var

fin:text;

i,j: byte;

begin

assign(fin,filename);

reset(fin);

Readln(fin,m,n);

for i:=1 to n do

for j:=1 to n do

read(fin,a[i,j]);

close(fin);

end;

procedure VivodM(filename:string; m,n:byte; a:tmas2);

var

fout:text;

i,j:byte;

begin

assign(fout,filename);

rewrite(fout);

writeln(fout,'Ishodnye dannye:');

for i:=1 to m do

begin

for j:=1 to n do

write(fout,a[i,j],' ');

writeln(fout);

end;

close(fout);

end;

procedure Check(Var a:tmas2);

var

i,j:byte;

fl:boolean;

begin

for i:=1 to m do

begin

fl:=true;

for j:=1 to n-1 do

begin

if a[i,j]<>a[i,j+1] then

begin

fl:=true;

break;

end

else

fl:=false;

end;

if fl=false then

for j:=1 to n do

a[i,j]:=0;

end;

end;

begin

VvodM('L7_IN.TXT',a);

VivodM('L7_OUT.TXT',m,n,a);

assign(fout,'L7_OUT.TXT');

append(fout);

Writeln(fout,'Izmenennyi massiv');

Check(a);

for i:=1 to m do

begin

for j:=1 to n do

Write(fout,a[i,j],' ');

writeln(fout);

end;

close(fout);

end.