Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Министерство образования РФ
Томский Государственный Университет Систем Управления и
Радиоуправления
(ТУСУР)
Отчет
О лабораторной работе № 4 (Задачи №2 и №12)
По дисциплине «Программирование на языке высокого уровня»
Выполнил студент гр.585-2
Миронов И. В.
Проверил ст.преп. каф. КСУП
Потапова Е. А.
Томск 2005
Содержание
Основная часть ----------------------- 46 стр.
Основная часть ----------------------- 79 стр.
ВВЕДЕНИЕ
Строки.
Тип string (строка) в Турбо Паскале широко используется для обработки текстов. Количество символов в строке-переменной может меняться от 0 до N, где N- максимальное количество символов в строке. Значение N определяется объявлением типа string [N] и может быть любой константой порядкового типа, но не более 255.
Действия над строками и символами реализуются с помощью описываемых ниже стандартных процедур и функций:
concat (s1 [,s2,...,sN] ) функция типа string; возвращает строку, представляющую собой сцепление строк-параметров s1,s2,...,sN.
cоpy (st, index, count) функция типа string; копирует из строки st count символов, начиная с символа с номером index.
delete (st, index, count) процедура; удаляет count символов из строки st, начиная с символа с номером index.
insert (subst, st, index) процедура; вставляет подстроку subst в строку st, начиная с символа с номером index.
length (st) функция типа integer; возвращает длину строки st.
pos (subst, st) функция типа integer; отыскивает в строке st первое вхождение подстроки subst и возвращает номер позиции с которой она начинается; если подстрока не найдена, возвращается ноль.
str (x [: windth [:decimals]], st) процедура; преобразует число Х любого вещественного или целого типов в строку символов st так, как это делает процедура writeln перед выводом; параметры width и decimals, если они присутствуют, задают формат представления: width определяет общую ширину поля, выделенного под соответствующее символьное представление вещественного или целого числа Х, а decimals количество символов в дробной части (этот параметр имеет смысл только в том случае, когда Х вещественное число).
val (st, x, code) процедура; преобразует строку st во внутреннее представление целой части или вещественной переменной Х, которой определяет тип этой переменной; параметр code содержит ноль, если преобразование прошло успешно, и тогда в Х помещается результат преобразования, в противном случае он содержит номер позиции в строке st, где обнаружен ошибочный символ, и в этом случае содержимое Х не меняется.
upcase (ch) функция типа char; возвращает для символьного выражения ch, которое должно представлять собой строчную латинскую букву, соответствующую заглавную букву; если значением ch является любой другой символ, функция возвращает его без преобразования.
ЗАДАЧА №2
Основная часть.
1). Условие задачи:
2. Для заданных трех строк S1, S2 и S3 определить какая из этих строк
является палиндромом.
2). Описание переменных, используемых в программе:
Str1[i],str2[i],str3[i] символьный массив.
s1,s2,s3 строки.
d1,d2,d3 переменные, определяющее симметричность строк.
n кол-во символов строке.
i счетчик цикла.
3). Пошаговое описание алгоритма:
Шаг №1 выводим последовательно три строки символов;
Шаг №2 проверяем каждую строчку на симметричность(т.е. палиндром), если первый член равен n-ом, второй равен (n-1)-ому то строка - полиндром;
i,n,d1,d2,d3 целочисленные переменные. Для этих переменных выбираем тип integer, так как нужны целочисленные значения.
str[i],str[i],str[i] строковые массивы.
s1,s2,s3 строковые переменные.
Блок схема:
ТЕКСТ ПРОГРАММЫ:
Uses Crt;
var
str1,str2,str3:array [1..100] of char;
s1,s2,s3:string;
i,n:integer;
d1,d2,d3:integer;
BEGIN
clrscr;
randomize;
d1:=1;d2:=1;d3:=1;
write('Введите n - ');
readln(n);
write('1-ая строка: ');
for i:=1 to n do
begin
str1[i]:=chr(65+random(2));
s1:=s1+str1[i];
end;
write(s1);
for i:=1 to n do if (str1[i]=str1[n-i+1]) then d1:=d1*1 else d1:=d1*0;
if d1=1 then write ('-Палиндром');
write('2-ая строка: ');
for i:=1 to n do
begin
str2[i]:=chr(65+random(2));
s2:=s2+str2[i];
end;
write(s2);
for i:=1 to n do if (str2[i]=str2[n-i+1]) then d2:=d2*1 else d2:=d2*0;
if d2=1 then write ('-Палиндром');
write('3-я строка: ');
for i:=1 to n do
begin
str3[i]:=chr(65+random(2));
s3:=s3+str3[i];
end;
write(s3);
for i:=1 to n do if (str3[i]=str3[n-i+1]) then d3:=d3*1 else d3:=d3*0;
if d3=1 then write ('-Палиндром);
readln;
END.
{использование доп. библиотеки}
{присвоение переменным str1[i],str2[i],str3[i] значение char строковой массив}
{присвоение переменным s1,s2,s3 значение string}
{присвоение переменным i,n,d1,d2,d3 значение integer}
{очистка экрана}
{Вводим n}
{Выводим произвольно первую строку на экран}
{Если строка симметрична, то она палиндром}
{Выводим произвольно вторую строку на экран}
{Если строка симметрична, то она палиндром}
{Выводим произвольно третью строку на экран}
{Если строка симметрична, то она палиндром}
{конец программы}
ЗАДАЧА №12
Основная часть.
1). Условие задачи:
12. Составить программу, в результате выполнения которой из первой
заданной строки удаляется каждый символ, принадлежащий второй строке.
2). Описание переменных, используемых в программе:
Str1[i],str2[i],str3[i] символьный массив.
s1,s2,s3 строки.
n кол-во символов строке.
i,j счетчики циклов.
k номер символа в строке.
3). Пошаговое описание алгоритма:
Шаг №1 выводим последовательно три строки символов;
Шаг №2 с помощью оператора pos находим в первой строке символы, которые есть во второй и с помощью оператора delete удаляем эти символы из первой строки (k-номер символа в первой строке);
Шаг №3 Присваиваем третьей строке(s3) значение, полученное в результате удаления из первой строки символов, имеющихся во второй строке;
Шаг №4 выводим строку s3 на экран;
i,n,j,k целочисленные переменные. Для этих переменных выбираем тип integer, так как нужны целочисленные значения.
str[i],str[i],str[i] строковые массивы.
s1,s2,s3 строковые переменные.
Блок схема:
ТЕКСТ ПРОГРАММЫ
Uses Crt;
var
str1,str2,str3:array [1..100] of char;
s1,s2,s3:string;
i,n,j,k,p:integer;
BEGIN
clrscr;
randomize;
write('Введите n - ');
readln(n);
write('Первая строка имеет вид: ');
for i:=1 to n do
begin
str1[i]:=chr(65+random(10));
s1:=s1+str1[i];
end;
writeln(s1);
write('Вторая строка имеет вид: ');
for j:=1 to n do
begin
str2[j]:=chr(65+random(10));
s2:=s2+str2[j];
end;
writeln(s2);
write('Третья строка имеет вид: ');
for j:=1 to n do
begin
repeat
k:=pos(str2[j],s1);
if k>0 then delete(s1,k,1);
until k=0;
end;
s3:=s1;
writeln(s3);
readln;
END.
{использование доп. библиотеки}
{присвоение переменным str1[i],str2[i], str3[i] значение char строковой массив}
{присвоение переменным s1,s2,s3 значение string}
{присвоение переменным i,n,j,k,p значение integer}
{очистка экрана}
{Вводим n}
{Выводим произвольно первую строку на экран}
{Выводим произвольно первую строку на экран}
{Выводим третью строку}
{Удаляем из первой строки элементы принадлижащие второй строке }
{Присваиваем s3:=s1}
{Выводим третью строку}
{конец программы}
ВЫВОД.
Проделав эту лабораторную работу, мы познакомились с строковыми и символьными переменами, научились работать со строками и символами.
Конец
d1:=d1*1
Да
Нет
Для i от 1 до n
Нет
Да
i=n
Ввод n
начало
Для i от 1 до n
d1:=d1*0
Да
Нет
i=n
Вывод str1[i]
str1[i]=
=str1[n-i+1]
S1
Палиндром
S3
s3:=s1
Да
Выводим аналогично вторую и третью строку
…
Да
Да
Нет
K=0
delete(s1,k,1)
Да
k>0
начало
Выводим аналогично вторую строку
…
i=n
d1:=d1*0
Для i от 1 до n
str1[i]=
=str1[n-i+1]
i=n
Вывод str1[i]
Для i от 1 до n
Конец
d1:=d1*1
Нет
Ввод n
Да
Да
Нет
k:=pos(str2[j],s1);
Для i от 1 до n
Да
i=n
Нет
Нет