Каталог :: Программирование и комп-ры

Контрольная: Процедуры и функции

                  Министерство образования Российской Федерации                  
              Волгоградский государственный технический университет              
                          Кафедра прикладной математики                          
                           Семистровая работа по теме:                           
                           ПРОЦЕДУРЫ И ФУНКЦИИ                           
                                                                       Выполнил:
                                                                  студент группы
                                                                       Проверил:
                                 Волгоград 2003                                 
1. Задание
1.1.
Ввести двумерный массив. Найти сумму элементов с нечетными индексами.
1.2.
Ввести двумерный массив. Получить одномерный массив включающий все не нулевые
элементы матрицы. Найти модуль полученного вектора.
     
s:=summa(a,Na,Ma)
Блок-схема: знак завершения: КОНЕЦБлок-схема: данные: Вывод SБлок-схема: данные: Nх,Mx
VIVOD (a,Na,Ma, ‘A’)
VVOD (a, Na,Ma, ‘A’)
Блок-схема: знак завершения: ENDБлок-схема: данные: x [ i , j ] Блок-схема: подготовка: j:=1 to MxБлок-схема: подготовка: i:=1 to NxБлок-схема: знак завершения: НАЧАЛО Блок-схема: альтернативный процесс: VVOD (var x:matr; var Nx,Mx:integer; P:char) 2.1. Блок-схема Подпись: S:=0 Подпись: i:=1 Блок-схема: альтернативный процесс: Summa (var x:matr; Nx,Mx:integer):integer Подпись: j:=1
Подпись: j:=j+1 Блок-схема: решение: j>Mx Подпись: i:=i+1 Блок-схема: решение: i>Nx
Summa:=S
Блок-схема: знак завершения: END Подпись: j:=j+1Подпись: i:=i+1Блок-схема: решение: i>NxБлок-схема: решение: j>MxБлок-схема: данные: x [ i , j ] Подпись: j:=1Подпись: i:=1 Блок-схема: альтернативный процесс: VIVOD (var x:matr; Nx,Mx:integer; P:char) Блок-схема: знак завершения: END 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’) Блок-схема: знак завершения: КОНЕЦ Блок-схема: альтернативный процесс: VVOD (var x:matr; var Nx,Mx:integer; P:char) Блок-схема: данные: Nх,Mx Блок-схема: знак завершения: ENDБлок-схема: подготовка: i:=1 to Nx Блок-схема: данные: x [ i , j ] Блок-схема: подготовка: j:=1 to Mx

j:=j+1
Блок-схема: решение: j>Mx
Блок-схема: знак завершения: END
Блок-схема: альтернативный процесс: Modul (var x:vector; var Nx:integer; P:char):integer Подпись: M:=0 Блок-схема: подготовка: k:=1 to Nx Подпись: M:=ABS(M) Подпись: Modul:=MПодпись: M:=M+x[k] Блок-схема: знак завершения: END Блок-схема: данные: x [ i , j ] Подпись: k:=1 Блок-схема: решение: k>Nx Подпись: k:=k+1 Блок-схема: знак завершения: END Блок-схема: альтернативный процесс: VIVOD (var x:vector; Nx:integer; P:char) 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 0 4 –6 Vector: -4 2 4 -6

Modul=4