Разобьем предложение на отдельные слова и каждое будем хранить как элемент массива строк.
Program Example_132;
Const n=30;
Type Myarray_Str=Array [1..n] Of String;
Var A: Myarray_Str;
str: String[255];
k: Byte;
Procedure Init(Var b: Myarray_Str);
Var i: Integer;
Begin
k:=1; {Пока не встретится пробел,
формируем очередное слово k, прибавляя
по одной букве}
For i:=1 To Length(str)-1 Do
If str[i]<>' ' Then b[k]:=b[k]+str[i]
Else
{Если это не последний символ, то
увеличиваем счетчик слов и начинаем
формировать очередное слово}
If i<>Length(str)-1 Then
Begin Inc(k); b[k]:=' 'End;
End;
Begin
Writeln('Введите предложение');
Readln(str);
Init(A);
Writeln('Всего слов: ',k);
{Просматриваем все слова, если первый
символ очередного слова равен букве
'а', то выводим его}
For i:=1 To k Do If A[i][1]='a'
Then Write(A[i],' ');
Readln;
End.
Пример 5
Подсчитать сумму цифр, входящих в данную строку.
Program Example_133;
Function Sum(st: String): Integer;
Var i, d: Byte; s,k: Integer;
Begin
s:=0;
For i:=1 To Length(st) Do
Begin
Val(st[i], d, k);
If k=0 Then s:=s+d;
End;
Sum:=s;
End;
Пример 6
Строка символов представляет собой некоторый текст, слова в котором разделены одним или более пробелами. Преобразовать эту строку так, чтобы все слова разделялись ровно одним пробелом, а ведущие и хвостовые пробелы отсутствовали.
Решение
Program Example_134;
var s: string;
Begin
writeln('Введите строку текста с
пробелами');
readln(s);
while pos(' ', s)>0 do
delete (s, pos (' ', s),1);
{Пока в строке существуют два рядом
стоящих пробела, удаляем один из них}
if s[1]=' ' then
delete(s, length (s), 1);
if s[length(s)]=' ' then
delete(s, length(s), 1);
readln;
End.
Пример 7
Дана строка символов следующего вида:
p1q1p2q2p3q3...qnpn
где pi − целое неотрицательное число, а qi − знак арифметического действия из набора (+,-,*). Написать программу вычисления значения введенного выражения, предполагая, что действия выполняются согласно правилам арифметики.