Цель работы:
Изучение правил описания множественных типов данных, приемов использования множеств и операций над множествами в Паскаль-программах. Приобретение навыков решения задач с использованием множеств.
Задание:
Дано предложение, состоящее из латинских букв. Вывести все согласные буквы, которые входят хотя бы в одно слово.
|
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
Похожие работы
... , тем не менее, использование программ с перекрытиями снимает это ограничение. Два библиотечных модуля TURBO3 и GRAPH3 введены для совместимости с ранней версией 3.0 системы Турбо Паскаль. 2 Объекты Базовым в объектно-ориентированном программировании является понятие объекта. Объект имеет определённые свойства. ...
... . Объясните, для чего служат разрешения и привилегии в Windows NT. Зав. кафедрой -------------------------------------------------- Экзаменационный билет по предмету СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ Билет № 22 Перечислите возможности и инструменты системы программирования Microsoft Developer Studio. Укажите для чего предназначается буфер в системах ввода-вывода, ...
... выбрать режим Quit <Alt>-<X>, после чего нажать либо <Enter>, либо комбинацию <Alt>-<X>. ФУНКЦИОНАЛЬНЫЕ КЛАВИШИ Функциональные клавиши используются для управления средой Турбо Паскаля. Они обозначаются F1, F2,..., F12 и располагаются в самом верхнем ряду клавиатуры. С каждой из этих клавиш связывается некоторая команда меню. Действие почти всех функциональных ...
ения базы данных реализована на языке Turbo Pascal. Этот язык был разработан Н. Виртом первоначально для целей обучения программированию вообще. С этой точки зрения Паскаль имеет некоторое преимущество перед однотипными языками - такими, как, например, язык Си. По своей идеологии Паскаль близок к современной методике и технологии программирования. Этот язык весьма полно отражает идеи ...
0 комментариев