Задача на Паскал
Да се състави главна програма за обработка на три масива А[10,20], B[20,30] и C[30,40], където данните са числа в интервала [-999.99 - 999.999]. Съответните подпрограми да извършват следните обработки:
• извеждане на условието на задачата и името на автора;
• въвеждане на входните данни;
• извеждане на входните данни;
• всички отрицателни числа в интервала [ M - N] да се заменят с числото Q, kато се съхранят входните данни, т.е. резултатът да се препише в нов масив. Да се преброят променените елементи;
• да се изведат резултатите;
• резултатът да се запише във външен файл на диск С: с име DATA03.DAT.
Решение
program task03;
type
MAS=array[1..40, 1..40] of real;
procedure uslovie;
begin
writeln('Da se systavi glavna programa za obrabotka na ............');
end;
procedure vhod(var x:MAS; r, c:integer);
var
i, j: integer;
begin
for i := 1 to r do
for j := 1 to c do
begin
write('cell at row ', i, ', column ', j, ': ');
readln(x[i, j]);
end;
end;
procedure izhod(x:MAS ; r, c:integer);
var
i, j: integer;
begin
for i := 1 to r do
begin
for j := 1 to c do
write(x[i, j]:3:3, ' ');
writeln;
end;
end;
function replace(a: MAS; r, c: integer; var res: MAS; M, N, Q: real):integer;
var
i, j, count: integer;
begin
count := 0;
for i := 1 to r do
for j := 1 to c do
if (a[i, j] < 0) and (a[i, j] >= M) and (a[i, j] <= N) then
begin
res[i, j] := Q;
count := count + 1;
end
else
res[i, j] := a[i, j];
replace := count;
end;
procedure printMatrixToFile(var f: text; x:MAS; r, c:integer);
var
i, j: integer;
begin
for i := 1 to r do
begin
for j := 1 to c do
write(f, x[i, j]:3:3, ' ');
writeln(f);
end;
end;
var
a, b, c, aq, bq, cq: MAS;
m, n, q, replacedA, replacedB, replacedC, rowsA, colsA, rowsB, colsB, rowsC, colsC: integer;
f: text;
begin
(* izvejdane na uslovieto i avtora *)
uslovie;
writeln;
(* vyvejdane na vhodnite danni *)
writeln('matrix A:');
rowsA := 1; colsA := 2; (* vmesto 10, 20, 30, 40 - 1, 2, 3, 4, za po-byrzo vyvejdane ot klaviaturata *)
vhod(a, rowsA, colsA);
writeln('matrix A:');
izhod(a, rowsA, colsA);
writeln('matrix B:');
rowsB := 2; colsB := 3;
vhod(b, rowsB, colsB);
writeln('matrix B:');
izhod(b, rowsB, colsB);
writeln('matrix C:');
rowsC := 3; colsC := 4;
vhod(c, rowsC, colsC);
writeln('matrix C:');
izhod(c, rowsC, colsC);
write('M: ');
readln(m);
write('N: ');
readln(n);
write('Q: ');
readln(q);
writeln('M = ', m, ', N = ', n, ', Q = ', q);
writeln;
writeln;
(* zamqna na otricatelni 4isla v intervala [M-N] s Q *)
replacedA := replace(a, rowsA, colsA, aq, M, N, Q);
replacedB := replace(b, rowsB, colsB, bq, M, N, Q);
replacedC := replace(c, rowsC, colsC, cq, M, N, Q);
(* izvejdane na rezultatite *)
writeln('matrix AQ:');
izhod(aq, rowsA, colsA);
writeln('replaced numbers: ', replacedA);
writeln('matrix BQ:');
izhod(bq, rowsB, colsB);
writeln('replaced numbers: ', replacedB);
writeln('matrix CQ:');
izhod(cq, rowsC, colsC);
writeln('replaced numbers: ', replacedC);
readln;
(* zapis na rezultatite vyv fail*)
assign(f, 'C:\DATA03.DAT');
rewrite(f);
printMatrixToFile(f, aq, rowsA, colsA);
writeln(f, replacedA);
writeln(f);
printMatrixToFile(f, bq, rowsB, colsB);
writeln(f, replacedB);
writeln(f);
printMatrixToFile(f, cq, rowsC, colsC);
writeln(f, replacedC);
writeln(f);
close(f);
readln;
readln;
end.