Program mno;
uses crt;
var
s:string;
a:array[1..10] of string;
b:array[1..10] of integer;
i,e,r,t:integer;
begin
clrscr;
{a:=['б','в','г','д','ж','з','р','л','м','н','р'];}
a[1]:= 'б';
a[2]:= 'в';
a[3]:= 'г';
a[4]:= 'д';
a[5]:= 'ж';
a[6]:= 'з';
a[7]:= 'л';
a[8]:= 'м';
a[9]:= 'н';
a[10]:='р';
writeln('Введите слово строчными буквами.В конце поставьте точку');
read(s);
i:=1;
e:=1;
if s<>' ' then
i:=i+1;
if s<>'.' then
Writeln ('Поставьте точку') ELSE
begin
Case s of
'б':b[1]:=b[1]+1;
'в':b[2]:=b[2]+1;
'г':b[3]:=b[3]+1;
'д':b[4]:=b[4]+1;
'ж':b[5]:=b[5]+1;
'з':b[6]:=b[6]+1;
'л':b[7]:=b[7]+1;
'м':b[8]:=b[8]+1;
'н':b[9]:=b[9]+1;
'р':b[10]:=b[10]+1;
end;
end;
if s=' ' then t:=0;
if t<10 then t:=t+1;
if b[t]<2 then b[t]:=0;
i:=0;
writeln('');
if i<10 then
begin
i:=i+1;
if b>1 then write(a);
end;
readkey;
end.
[Pascal] Множества
Дана непустая последовательность из строчных русских букв , за последним символом - точка. Напечатать в алфавитном порядке все звонкие согласные буквы, которые входят в слово два и более раз.
Примечание: звонкие согласные-б,в,г,д,ж,з,л,м,н,р;
А вот мое решение:
Код:
Код:
uses crt;
const a:string='бвгджзлмнр'; {Строка с звонкими согласными в алфав. порядке}
var s:string; {Введённое слово}
b:array [0..10] of integer; {Сколько раз встречается i-я буква из строки a в строке s}
i:integer; {Счётчик цикла}
begin
clrscr;
writeln('Введите слово строчными буквами, в конце поставьте точку');
readln(s);
if s[length(s)]<>'.' then begin {Если последний символ - не точка}
write('Нет точки'); readln;
halt;
end;
for i:=1 to length(s) do {Считаем, сколько раз встречается какая буква из строки a}
inc(b[pos(s,a)]); {pos(s,a) - номер буквы в строке}
for i:=1 to 10 do
if b>=2 then write(a); {Если встречается >=2 раз, то выводим её}
{Буквы в строке a в алфавитном порядке, поэтому и ответ в алфавитном}
readln;
end.
const a:string='бвгджзлмнр'; {Строка с звонкими согласными в алфав. порядке}
var s:string; {Введённое слово}
b:array [0..10] of integer; {Сколько раз встречается i-я буква из строки a в строке s}
i:integer; {Счётчик цикла}
begin
clrscr;
writeln('Введите слово строчными буквами, в конце поставьте точку');
readln(s);
if s[length(s)]<>'.' then begin {Если последний символ - не точка}
write('Нет точки'); readln;
halt;
end;
for i:=1 to length(s) do {Считаем, сколько раз встречается какая буква из строки a}
inc(b[pos(s,a)]); {pos(s,a) - номер буквы в строке}
for i:=1 to 10 do
if b>=2 then write(a); {Если встречается >=2 раз, то выводим её}
{Буквы в строке a в алфавитном порядке, поэтому и ответ в алфавитном}
readln;
end.
P.S. Может авторы задачи так не считают, но "й" тоже звонкая согласная.
Но это не вся задача и хорошо было бы если бы ты добавил комментарии.
Цитата:
Но это не вся задача
А что ещё?
вот можно такой код:
Код:
uses crt;
const
a = ['б', 'в', 'г', 'д', 'ж', 'з', 'й', 'л', 'м', 'н*', 'р'];
var
s: string;
c: char;
i, j: word;
begin
clrscr;
c:=readkey; //считываем символы пока не будет точки в носим их в строку
while c<>'.' do
begin
s:=s+c;
write(c);
c:=readkey;
end;
writeln;
//располагаем в введенной строке символы по алфавиту
for i:=1 to length(s)-1 do
for j:=i+1 to length(s) do
if (s>s[j]) then
begin
c:=s;
s:=s[j];
s[j]:=c;
end;
//проверка на кол-во данных символов в строке и на вхождение в множество звонких согласных, если и туда и туда то выводим на печать
for i:=1 to length(s) do
for j:=i+1 to length(s) do
if (s=s[j]) and (s in a) then writeln(s);
readln;
end.
const
a = ['б', 'в', 'г', 'д', 'ж', 'з', 'й', 'л', 'м', 'н*', 'р'];
var
s: string;
c: char;
i, j: word;
begin
clrscr;
c:=readkey; //считываем символы пока не будет точки в носим их в строку
while c<>'.' do
begin
s:=s+c;
write(c);
c:=readkey;
end;
writeln;
//располагаем в введенной строке символы по алфавиту
for i:=1 to length(s)-1 do
for j:=i+1 to length(s) do
if (s>s[j]) then
begin
c:=s;
s:=s[j];
s[j]:=c;
end;
//проверка на кол-во данных символов в строке и на вхождение в множество звонких согласных, если и туда и туда то выводим на печать
for i:=1 to length(s) do
for j:=i+1 to length(s) do
if (s=s[j]) and (s in a) then writeln(s);
readln;
end.
Цитата: kosfiz
а где использование множеств???
Кажется, я лишний раз убедился, что мне не стоит отвечать в разделе "Студентам"…
Мне тоже так и хочется наставить слешей в комментариях (и пустых скобок в функциях), но Turbo Pascal'е (который, наверное, и имелся в виду) так не делают.
стоит. только я и не говорю, что слеши там обработаются как комментарий, если человек хотя бы код накидал, то должен знать, что и как и уж тем более про комментарии.