РефератыИнформатика, программированиеПрПрограммирование на Турбо Паскале

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

Цель работы:


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


Задание:


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




























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

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Программирование на Турбо Паскале

Слов:697
Символов:10557
Размер:20.62 Кб.