Решение задач. Строковый тип
Пример 1.
Дано слово, состоящее из четного числа букв. Вывести на экран его первую половину.
Var i,x:byte;
a:string;
begin
repeat
write('Введите слово из четного числа букв');
readln(a);
x:=length(a); {определяем длину слова}
until (x mod 2 = 0);
x:= x div 2; {применяем целочисленное деление}
for i:=1 to x do write(a[i]);
readln
end.
Пример 2.
Составить программу, которая печатает заданное слово в обратном порядке.
Var i,x:byte;
a:string;
begin
write('Введите слово ');
readln(a);
x:=length(a);{определяем длину слова}
for i:=x downto 1 do write(a[i]);
readln
end.
Пример 3.
Дано предложение. Определить число пробелов в нем.
Var i,x,k:byte;
a:string;
begin
write('Введите предложение');
readln(a);
x:=length(a); {определяем длину слова}
k:=0;
for i:=1 to x do if a[i]=' ' then k:=k+1;
writeln(k);
readln
end.
Пример 4.
Дано предложение. Определить порядковый номер первой встреченной буквы 'к'. Если такой буквы нет, сообщить об этом.
Var i,x,k,f:byte;
a:string;
begin
write('Введите предложение');
readln(a);
x:=length(a);{определяем длину слова}
k:=0; I:=0; f:=0;
repeat
I:=I+1;
if a[i]<>'к' then k:=k+1 else f:=1;
until (I=x)or( a[i]='к' );
if f=1 then writeln(k) else writeln(' Нет такой буквы');
readln
end.
Пример 5. Дано название города. Определить, четно или не четно количество символов в нем.
Var x:byte;
a:string;
begin
write('Введите слово');
readln(a);
x:=length(а);
if odd(x) then write('не четно') else write('четно');
readln
end.
Значение функции odd(x) истинно, если число x не четное.
Пример 6. Проверьте, является ли строка палиндромом.
var
s: string;
i,f: byte;
begin
write('String: ');
readln(s);
f := 0;
for i := 1 to length(s) div 2 do
if s[i] <> s[length(s)-i+1] then begin { сравниваем символы}
writeln('No palindrome');
f := 1;
break
end;
if f = 0 then
write('Palindrome');
readln
end.
Пример 7. В строке, состоящей из слов, разделенных пробелами, определить длину кратчайшего и самого длинного слов.
Описание переменных:
str - исходная строка,
len - длина исходной строки,
shortest, longest - длины самого короткого и самого длинного слов,
current - длина текущего слова.
Алгоритм решения задачи:
Увеличиваем значение переменной current, пока не встретим пробел. Тем самым узнаем длину текущего слова.
Если очередной символ - это пробел, то сравниваем значение current со значениями записанными в переменных shortest и longest. При необходимости меняем их значения на то, что находится в current. Значение current обнуляем.
Чтобы сравнить длину последнего слова (ведь пробела после него может не быть, и, следовательно, current не сравнивается с shortest и longest), предусмотрено сравнение переменных за циклом.
Программа на языке Паскаль:
var
str: string;
len, i: byte;
shortest, longest, current: byte;
begin
readln(str);
len := length(str);
shortest := 255;
longest := 0;
current := 0;
for i:=1 to len do begin
if (str[i] <> ' ') then
current := current + 1
else begin
if current < shortest then
shortest := current;
if current > longest then
longest := current;
current := 0;
end;
end;
if current < shortest then
shortest := current;
if current > longest then
longest := current;
writeln(shortest, ' ', longest);
readln;
end.
