Программирование на Турбо Паскале
Writeln ('Для продолжения нажмите любую клавишу…');Readkey; Writeln ('Для продолжения нажмите любую клавишу…');Readkey; Write ('Введите число строк:');Readln (n); {Ввод данных}. Writeln ('¦','Терм. ветвь':12,'¦', a: 26,'¦',' a=', a: 7,'¦'); Для продолжения нажмите любую клавишу… Writeln ('¦','Терм. ветвь':12,'¦', s:26,'¦',' a=', a: 7,'¦'); Для продолжения нажмите любую клавишу. Просчет… Читать ещё >
Программирование на Турбо Паскале (реферат, курсовая, диплом, контрольная)
Цель работы:
Изучение правил описания множественных типов данных, приемов использования множеств и операций над множествами в Паскаль-программах. Приобретение навыков решения задач с использованием множеств.
Задание:
Дано предложение, состоящее из латинских букв. Вывести все согласные буквы, которые входят хотя бы в одно слово.
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 | а[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 | а[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