Процедуры и функции

Министерство образования Российской Федерации
Волгоградский государственный технический университет

Кафедра прикладной математики

Семистровая работа по теме
ПРОЦЕДУРЫ И ФУНКЦИИ

Выполнил
студент группы

Проверил

Волгоград 2003
1. Задание

1.1.
Ввести двумерный массив. Найти сумму элементов с нечетными индексами.

1.2.
Ввести двумерный массив. Получить одномерный массив включающий все не нулевые элементы матрицы. Найти модуль полученного вектора.
2
VVOD (a, Na,Ma, ‘A’)

s =summa(a,Na,Ma)

VIVOD (a,Na,Ma, ‘A’)

.1. Блок-схема

S =0

i =1

j =1

S = S + x [i, j]

j =j+1

i =i+1

Summa =S

i =1
j =1

i =i+1
j =j+1

3.1. Текст программы

PROGRAM SEM1;
uses crt;
const Nmax=10;
Mmax=10;
type matr=array[1..Nmax,1..Mmax] of integer;
var A matr;
Na,i,j,Ma,S,max integer;

Procedure Vvod(var x matr; var Nx,Mx integer; P char);
begin
clrscr;
write(‘Vvedite N ‘);
read(Nx);
writeln;
write(‘Vvedite M ‘);
read(Mx);
writeln;
for i =1 to Nx do
for j =1 to Mx do begin
write(P,'[‘,i,’,’,j,’]=’);
read(x[i,j]);
end;

end;

Function Summa(var x matr; Nx,Mx integer) integer;
begin
S =0;
i =1;
repeat
j =1;
repeat
if (i mod 2<>0) and (j mod 2<>0) then S =S+x[i,j];
j =j+1;
until j>Mx;
i =i+1;
until i>Nx;
Summa =S;
end;

Procedure Vivod(var x matr; Nx,Mx integer; P char);
begin
writeln;
writeln(‘Matrica ‘,P,’ ‘);
writeln;
i =1;
repeat
j =1;
repeat
write(x[i,j],’ ‘);
j =j+1;
until j>Mx;
writeln;
i =i+1
until i>Nx;
end;

begin
vvod(a,na,ma,’A’);
S =Summa(a,na,ma);
vivod(a,na,ma,’A’);
writeln;
writeln(‘SUMMA= ‘,S);
end.

4.1. Тестовый пример и результат

N=3 M=3

1 2 3
4 5 6
7 8 9

SUMMA=20

2.2. Блок-схема

VVOD (a,Na,Ma‘A’)

SOZD (a,Na,Ma)

M =Modul(c,Nc)

VIVOD (c, Nc,‘C’)

Nc =0

k =1

i =1

j =1

c[k] =x[i, j]

Nc =Nc + 1

k =k + 1

j =j+1

i =i+1

M =0

M =ABS(M)

M =M+x[k]
Modul =M

k =1

k =k+1

3.2. Текст программы

PROGRAM SEM2;
uses crt;
const Nmax=10;
Mmax=10;
Kmax=100;
type matr=array[1..Nmax,1..Mmax] of integer;
vector=array[1..Kmax] of integer;
var A matr;
C vector;
Na,i,j,Ma,Nc,k,M integer;

Procedure Vvod(var x matr; var Nx,Mx integer; P char);
begin
clrscr;
write(‘Vvedite N ‘);
read(Nx);
writeln;
write(‘Vvedite M ‘);
read(Mx);
writeln;
for i =1 to Nx do
for j =1 to Mx do begin
write(P,'[‘,i,’,’,j,’]=’);
read(x[i,j]);
end;

end;

Procedure Sozd(var x matr; Nx,Mx integer);
begin
Nc =0;
k =1;
i =1;
repeat
j =1;
repeat
if (x[i,j]<>0) then begin
c[k] =x[i,j];
Nc =Nc+1;
k =k+1;
end;
j =j+1;
until j>Mx;
i =i+1;
until i>Nx;
end;

Function Modul(var x vector; Nx integer) integer;
begin
M =0;
for k =1 to Nx do M =M+x[k];
M =ABS(M);
Modul =M;
end;

Procedure Vivod(var x vector; Nx integer; P char);
begin
writeln;
writeln(‘Vector ‘,P,’ ‘);
writeln;
k =1;
repeat
write(x[k],’ ‘);
k =k+1;
until k>Nx;
writeln;
end;

begin
vvod(a,na,ma,’A’);
Sozd(a,na,ma);
M =Modul(c,nc);
vivod(c,nc,’C’);
writeln;
writeln(‘MODUL= ‘,M);
end.

4.2. Тестовый пример и результат

N=2 M=3

-4 2 0

4 –6

Vector
-4 2 4 -6

Modul=4