Смекни!
smekni.com

Программирование на Турбо Паскале (стр. 1 из 2)

Цель работы:

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

Задание:

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






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 013713162331364545454545454545 а[1,1]= 1а[1,2]= 2a[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 0000000091422293238424345 а[1,1]= 1а[1,2]= 2a[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