Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[Pascal] Множества

16K
04 декабря 2007 года
Guy
33 / / 27.11.2007
Не пойму что не работает.Вот задание:
Дана непустая последовательность из строчных русских букв , за последним символом - точка. Напечатать в алфавитном порядке все звонкие согласные буквы, которые входят в слово два и более раз.
Примечание: звонкие согласные-б,в,г,д,ж,з,л,м,н,р;
А вот мое решение:
Код:
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.
5.3K
04 декабря 2007 года
Somebody
185 / / 24.12.2006
Сложновато разбираться в программе с ошибками и без комментариев. Программу для обработки строки без циклов мне проще написать заново, чем переделывать. Вот прога:
Код:
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.

P.S. Может авторы задачи так не считают, но "й" тоже звонкая согласная.
16K
04 декабря 2007 года
Guy
33 / / 27.11.2007
Но это не вся задача и хорошо было бы если бы ты добавил комментарии.
5.3K
04 декабря 2007 года
Somebody
185 / / 24.12.2006
Комментарии вроде дописал, стало ли понятнее - не знаю.
Цитата:
Но это не вся задача


А что ещё?

257
05 декабря 2007 года
kosfiz
1.6K / / 18.09.2005
а где использование множеств???
вот можно такой код:
Код:
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.
5.3K
05 декабря 2007 года
Somebody
185 / / 24.12.2006
Цитата: kosfiz

а где использование множеств???


Кажется, я лишний раз убедился, что мне не стоит отвечать в разделе "Студентам"…
Мне тоже так и хочется наставить слешей в комментариях (и пустых скобок в функциях), но Turbo Pascal'е (который, наверное, и имелся в виду) так не делают.

257
05 декабря 2007 года
kosfiz
1.6K / / 18.09.2005
стоит. только я и не говорю, что слеши там обработаются как комментарий, если человек хотя бы код накидал, то должен знать, что и как и уж тем более про комментарии.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог