Программирование на Турбо Паскале

Цель работы:

Изучение правил описания множественных типов данных, приемов использования множеств и операций над множествами в Паскаль-программах. Приобретение навыков решения задач с использованием множеств.

Задание:

Дано предложение, состоящее из латинских букв. Вывести все согласные буквы, которые входят хотя бы в одно слово.

Sum:= sum2(n, m,11,1,a)

Function sum1(n, m,i, j,s, k : integer; a : matrix):integer;

Function sum2(n, m,i, j,k : integer; a : matrix):integer;

Procedure show_matrix(n, m : integer;a : matrix);

Программа:

{*****************************************}

{Программа:lab21 }

{Цель:поиск символов в тексте }

{Описание параметров и переменных: }

{ a – матрица }

{ i, j,n, m – вспомагательные переменные }

{ c – ключ выхода }

{ sum – сумма }

{Подпрограммы:есть }

{Программист: Кондрахин А. В.,гр.343 }

{Проверил: Москвитина О. А.,каф. ВПМ }

{Дата написания: 14 марта 2004 г. }

{*****************************************}

Programlab21;

Usescrt;

Type

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

Var

A :matrix;

I, j,n, m:integer;

C :char;

Sum :integer;

Procedure show_matrix(n, m : integer;a : matrix);

Var

I, j :integer;

Begin

Writeln(‘Матрица:’);

For i:=1 to n do

Begin

Write(‘│ ‘);

For j:=1 to m do

Write(a[i, j]:3);

Writeln(‘ │’);

End;

Writeln;

Writeln(‘Дляпродолжениянажмителюбуюклавишу…’);Readkey;

End;

Function sum1(n, m,i, j,s, k : integer; a : matrix):integer;{восходящаярекурсия}

Var

Tsum :integer;

Begin

If (i=n) and (j=m)

Then begin{терминальнаяветвь}

Writeln(‘│’,’Терм. ветвь’:12,’│’,s:26,’│’,’ a[‘,i,’,’,j,’]=’,a[i, j]:7,’│’);

Sum1:=s+a[i, j];

End {терминальнаяветвь}

Else if not(i=n) and (j=m)

Then begin{рекурсивнаяветвь}

Writeln(‘│’,’Вход ‘,k:7,’│’,s:26,’│’,’ a[‘,i,’,’,j,’]=’,a[i, j]:7,’│’);

Tsum:=sum1(n, m,i+1,1,s+a[i, j],k+1,a);

Sum1:=tsum;

Writeln(‘│’,’Выход ‘,k:6,’│’,tsum:26,’│’,’ a[‘,i,’,’,j,’]=’,a[i, j]:7,’│’)

End {рекурсивнаяветвь}

Else begin{рекурсивнаяветвь}

Writeln(‘│’,’Вход ‘,k:7,’│’,s:26,’│’,’ a[‘,i,’,’,j,’]=’,a[i, j]:7,’│’);

Tsum:=sum1(n, m,i, j+1,s+a[i, j],k+1,a);

Sum1:=tsum;

Writeln(‘│’,’Выход ‘,k:6,’│’,tsum:26,’│’,’ a[‘,i,’,’,j,’]=’,a[i, j]:7,’│’)

End; {рекурсивная ветвь}

End;{восходящая рекурсия}

Function sum2(n, m,i, j,k : integer; a : matrix):integer;{нисходящаярекурсия}

Var

Tsum :integer;

Begin

If (i=n) and (j=m)

Then begin {терминальнаяветвь}

Writeln(‘│’,’Терм. ветвь’:12,’│’,a[i, j]:26,’│’,’ a[‘,i,’,’,j,’]=’,a[i, j]:7,’│’);

Sum2:=a[i, j];

End {терминальнаяветвь}

Else if not(i=n) and (j=m)

Then begin{рекурсивнаяветвь}

Writeln(‘│’,’Вход ‘,k:7,’│’,0:26,’│’,’ a[‘,i,’,’,j,’]=’,a[i, j]:7,’│’);

Tsum:=sum2(n, m,i+1,1,k+1,a)+a[i, j];

Sum2:=tsum;

Writeln(‘│’,’Выход ‘,k:6,’│’,tsum:26,’│’,’ a[‘,i,’,’,j,’]=’,a[i, j]:7,’│’)

End {рекурсивнаяветвь}

Else begin{рекурсивнаяветвь}

Writeln(‘│’,’Вход ‘,k:7,’│’,0:26,’│’,’ a[‘,i,’,’,j,’]=’,a[i, j]:7,’│’);

Tsum:=sum2(n, m,i, j+1,k+1,a)+a[i, j];

Sum2:=tsum;

Writeln(‘│’,’Выход ‘,k:6,’│’,tsum:26,’│’,’ a[‘,i,’,’,j,’]=’,a[i, j]:7,’│’)

End; {рекурсивная ветвь}

End;{нисходящая рекурсия}

Begin

ClrScr;

C:=’Y’;

While (UpCase(c)=’Y’) do

Begin

Write(‘Введитечислострок:’);Readln(n); {Вводданных}

Write(‘Введите число столбцов:’);Readln(m);

Writeln(‘Введите матрицу:’); {Ввод матрицы}

For i:=1 to n do

Begin

For j:=1 to m do

Begin

Write(‘a[‘,i,’,’,j,’]=’);Read(a[i, j]);

End;

Writeln;

End;

Show_matrix(n, m,a); {Эхо-выводматрицы}

Writeln(verh);Writeln(inc1);Writeln(cent1);

Writeln(‘│’,’Восходящая’:12,’│ │ │’);

Sum:=sum1(n, m,1,1,0,1,a); {Вызоврекурсии}

Writeln(niz);

Writeln(‘СУММА:’,sum:51);Writeln;

Writeln(‘Для продолжения нажмите любую клавишу…’);Readkey;

Writeln(verh);Writeln(inc1);Writeln(cent1);

Writeln(‘│’,’Нисходящая’:12,’│ │ │’);

Sum:=sum2(n, m,1,1,1,a); {Вызоврекурсии}

Writeln(niz);

Writeln(‘СУММА:’,sum:51);Writeln;

Write(‘Ввести еще одну матрицу? (Y/N):’);

C:=Readkey;Writeln(c);

Writeln;

End;

End.

Просчет контрольного варианта на ЭВМ:

Введите число строк:3

Введите число столбцов:3

Введите матрицу:

A[1,1]=1

А[1,2]=2

А[1,3]=Ч

A[2,1]=6

А[2,2]=3

А[2,3]=7

A[3,1]=8

А[3,2]=5

А[3,3]=9

Матрица:

│ 1 2 Ч │

│ 6 3 7 │

│ 8 5 9 │

Для продолжения нажмите любую клавишу…

Рекурсия Значение суммы Значения i, j

Восходящая

Вход 1

Вход 2

Вход 3

Вход 4

Вход 5

Вход 6

Вход 7

Вход 8

Терм, ветвь

Выход 8

Выход 7

Выход 6

Выход 5

Выход 4

Выход 3

Выход 2

Выход 1

0

1

3

7

13

16

23

31

36

45

45

45

45

45

45

45

45

А[1,1]= 1

А[1,2]= 2

A[1,3]= 4

А[2,1]= 6

А[2,2]= 3

А[2,3]= 7

А[3,1]= 8

А[3,2]= 5

А[3,3]= 9

А[3,2]= 5

А[3,1]=8

А[2,3]=7

А[2,2]=3

А[2,1]=6

А[1,3]=4

А[1,2]=2

А[1,1]=1

СУММА 45

Для продолжения нажмите любую клавишу.

Рекурсия Значение суммы Значения i, j

Нисходящая

Вход 1

Вход 2

Вход 3

Вход 4

Вход 5

Вход 6

Вход 7

Вход 8

Терм, ветвь

Выход 8

Выход 7

Выход 6

Выход 5

Выход 4

Выход 3

Выход 2

Выход 1

0

0

0

0

0

0

0

0

9

14

22

29

32

38

42

43

45

А[1,1]= 1

А[1,2]= 2

A[1,3]= 4

А[2,1]= 6

А[2,2]= 3

А[2,3]= 7

А[3,1]= 8

А[3,2]= 5

А[3,3]= 9

А[3,2]= 5

А[3,1]=8

А[2,3]=7

А[2,2]=3

А[2,1]=6

А[1,3]=4

А[1,2]=2

А[1,1]=1

СУММА 45

Ввести еще одну матрицу? (Y/N):n


Программирование на Турбо Паскале