3.1. Признак {Факт совпад. символа из новой строки с симв. исх. строки}=0
3.2. Для номера нового символа(j) от 1 до Колич._нов_символов. выполнить
Если нов.сим.j=ст.сим.i, то признак =j
3.3.Eсли признак = 0, то
а) Колич_нов_символов = Колич_нов_символов +1;
б) нов.cим.[Колич_нов_символов] = ст.сим.[i]
Обозначим:
Старый сим.{символ из исходной строки} => s
Колич_нов_символов => n
Признак => jn
Новый сим. => ns
Колич_нов_символов => ks
Программа для этого алгоритма будет иметь вид
Program Psk;
Var
s : String;
ns : String;
i, j, ks, jn : Integer;
Begin
writeln('Введите строку');
readln(s); { п.1 }
n:=length(s);
ks:=0; { п.2 }
For i := 1 to n do { п.3 }
begin
jn := 0; { п.3.1 }
for j := 1 to ks do {п.3.2}
If ns[j]=s[i] then
jn:=J;
If jn=0 then {п.3.3}
begin
ks := ks+1;
ks[ks] := s[i];
end;
end;
Writeln('Символы, входящие в исходную строку');
For i := 1 to ks do
Write(ns[i]);
End.
Пример 3. (продолжение примера 2). Подсчитать, сколько раз каждый символ встречается в исходном тексте.
В алгоритм примера 2 вместо пункта 5 (Закончить) вставим новый:
5. Подсчет количества вхождений каждого символа в исходную строку.
Чтобы сделать это, будем каждый символ новой строки сравнивать с символами исходной строки и подсчитывать количество совпадений.
Уточняем алгоритм
5.1. Для j от 1 до Колич_нов_символов выполнить
5.2. Кол.=0
5.3. Для i от 1 до n выполнить
Если нов.сим.j=ст.сим.i, то
кол.=кол+1
5.4. Вывести кол.
Для рассматриваемого случая полный текст программы приводить не будем. Фрагмент, помешенный ниже, должен быть вставлен в программу для примера 3 перед последним оператором (End.)
{Подсчет количества вхождений символов}
For j := 1 to ks do {п. 5.1 }
begin
kol := 0; {п. 5.2}
For i := 1 to n do {п. 5.3}
If ns[j] = s[i] then
kol := kol + 1;
{п. 5.4}
writeln('Количество букв : ',ns[j],' равно ',kol);
end;
Пример 4. Ввести в ЭВМ строку из n символов латинского алфавита (n<30). Расположить их по алфавиту.
Воспользуемся тем, что буквы латинского алфавита 'A' – 'Z', 'a' –'z' имеют коды, значения которых возрастают. При этом для решения задачи можно применять алгоритм сортировки "пузырьком".
Program Sorts;
var
s : string;
sr : char;
n, i, k : integer;
Begin
writeln('Введите строку');
readln(s);
n := length(s);
for k := 1 to n-1 do
for i := 1 to n-k do
if s[i]>s[i+1]then
begin
sr :=s[i];
s[i] := s[i+1];
s[i+1] := sr;
end;
writeln('Строка с упорядоченными символами:');
writeln(s);
End.
Пример 5. Ввести в ЭВМ предложение. Подсчитать количество гласных в нем. В более общей постановке задачи необходимо определить, сколько раз встречаются в предложении символы из некоторого эталонного набора (согласные, звонкие согласные, цифры и т.д.).
При разработке алгоритма решения этой задачи учтем, что гласные (вообще символы из произвольного набора) располагаются в разных местах кодировочной таблицы. Для подсчета их количества в программе необходимо задать строку гласных (эталонную строку), а затем определить, сколько раз символы эталонной строки встречаются в предложении.
Можно предложитьследующий алгоритм решения такой задачи.
1. Задать эталонную строку.
2. Ввести предложение.
3. Подсчитать количество символов эталонной строки в предложении и вывести его.
4. Закончить.
Убедившись в правильности шагов этого алгоритма, уточним его и получим.
1.1 Задать Эталонную_строку.
1.2. m = Длина(Эталонной_строки).
2.1. Ввести Предложение.
2.2. n = Длина(Предложения).
3.1. Количество_символов = 0.
3.2. Для номера символа Предложения (i) от 1 до n выполнить
3.2.1. Для номера символа Эталонной_строки (j) от 1 до m выполнить
Если Предложениеi = Эталонная_Строкаj то
Количество_символов = Количество_символов + 1.
3.3. Вывести Количество_символов.
4. Закончить.
Программа для этого алгоритма приведена ниже.
Program Count_Gl;
Var
Predl,Gl:String; { Предложение и эталонная строка }
Пример 6 (вариант примера 5). Ввести в ЭВМ предложение. Найти и вывести на экран наиболее редко встречающуюся в нем гласную.
В этой задаче необходимо использовать несколько (массив) счетчиков: столько, сколько символов в строке эталонов. В начале подсчитывается, сколько раз каждый эталонный символ встречается в предложении, а затем применяется известный алгоритм нахождения минимума. При этом необходимо учесть, что тривиальное значение минимума, равное нулю, не может быть решением, так как такой символ вообще отсутствует в предложении.
Составим алгоритм.
1. Задать эталонную строку.
2. Ввести предложение.
3. Подсчитать, сколько раз каждый символ эталонной строки встречается в предложении.
4. Найти наиболее редкий символ и вывести его
5. Закончить.
Убедившись в правильности шагов этого алгоритма, уточним его.