Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Цель работы:
Изучение правил описания множественных типов данных, приемов использования множеств и операций над множествами в Паскаль-программах. Приобретение навыков решения задач с использованием множеств.
Задание:
Дано предложение, состоящее из латинских букв. Вывести все согласные буквы, которые входят хотя бы в одно слово.
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 г. }
{*****************************************}
program lab21;
uses crt;
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