Цитата:
Сообщение от pashasnuff
C:Char; а вот это, это тот символ который перебирется в данных момент цикла?
|
Знаете, я вот тут сообразил, как сильно упростить программу и сделать упорядоченный вывод без использования этого дурацкого массива. Но сразу предупреждаю: это писалось в НОРМАЛЬНОМ Паскале (Free, Turbo) а про задвиги ABC ничего не знаю и знать не хочу:
Код:
Const
Sonants:Set of Char=['б','в','г','д','ж','з','л','м','*н','р'];
Var
S:String;
C:Char;
i,k,N:Integer;
Found:Set of Char;
Begin
Writeln('Enter the string:');
Readln(S);
Writeln;
Found:=[];
N:=0;
i:=0;
Repeat
Inc(i);
If (S[i] in Sonants) and not (S[i] in Found) then
begin
C:=S[i];
k:=i;
repeat
Inc(k);
until (S[k]=',') or (k=Length(S));
if S[k]=',' then
begin
repeat
Inc(k);
until (S[k]=C) or (k=Length(S));
if S[k]=C then
begin
Found:=Found+[C];
Inc(N);
end;
end;
end;
Until i=Length(S)-1;
If N=0 then
Writeln('No such symbols')
else
begin
Writeln('Result:');
for C:='б' to 'р' do
if C in Found then write(C+' ');
end;
Readln
End.
Теперь о том, как работает программа.
1. Вводим строку. Строка - это массив символов.
2. Объявляем пустое символьное множество Found и нулевое значение количества искомых символов N.
3. Организуем цикл последовательного перебора символов строки (с увеличением индекса i). Если текущий символ имеется в множестве-константе Sonants и не содержится в множестве Found, то запоминаем его в виде символа С, дальше двигаемся по строке до первой запятой (или до конца строки), и, начиная с символа, следующего за этой запятой, последовательно сравниваем с С все символы строки. Если найдется такой же символ, как и С, то:
а) вносим его во множество Found (теперь, если он встретится где-то дальше, он уже не "сыграет")
б) Увеличиваем N на единицу.
Цикл по i продолжаем, пока строка не кончится.
4. Выводим результат путем организации символьного цикла (не знаю, умеет ли такое этот кретинский АВС) от 'б' до 'р', и если текущий символ имеется в множестве Found, выводим его на экран. Ну а если соответствующих условию задачи символов нет вовсе, то выводим сообщение "Таких символов нет!".