Другие языки программирования и технологии

Туплю в паскале

задание тупое : В строке, состоящей из русских букв, подсчитайте количество гласных прописных и строчных букв.Вроде все элементарноprogram stroka;var str : string; i,n : integer;beginwriteln('Введите что нить умное');readln(str);n:=0;for i:=1 to length(str) do if str='У', 'у', 'Е','е','Ы','ы','А','а','О','о','Э','э','Я','я','И','и','Ю', 'ю' thenbeginn:=n+1; end; writeln('n=',n);end.Однако ругается на первую запятую перечисления букв, если писать через case будет ругатся препод так кода до фига будет, у кого какие идеи?
Антон Кофанов
Антон Кофанов
6 161
попробуй написать if str[ i] in ['У','у', ну и остальные] then
тогда ты будешь использовать множество
а иначе тут никак
Шаршен Суваналиев
Шаршен Суваналиев
3 219
Лучший ответ
Антон Кофанов Красиво и коротко, а то на 10 or препод меня задушит)) спасибо
Иван Семчук удивительно, что операторы OR он не догадался поставить, а вариант с использованием множества проглотил
Доброго времени суток.

Есть более элегантное решение. Объявляете строковую константу, состоящую из гласных букв.

const Vocalic = 'УуЕеЫыАаОоЭэЯяИиЮю';

А дальше в программе просматриваете свою строку и ищете очередной символ строки в этой константе. Если находите, то увеличивете счетчик.

for j:=1 to Length(str) do
if Pos(str[j], Vocalic) > 0 then n:=n+1;

И далее по тексту.

Для повышения скорости есть смысл просматривать строку от конца к началу, чтобы ее длина вычислялась один раз при инициализации упрапвляющей переменной цикла.

for j:=Length(str) downto 1 do

Удачи!
KM
Karo Manukyan
59 612
тогда уж так пиши
for i:=1 to length(str) do if (str [ i ] ='У') or (str [ i ] ='у') or (str [ i ] ='Е') or (str [ i ] ='е') ну и так все перечисли через OR
Иван Семчук
Иван Семчук
6 257
немного оффтопа, таксказать типс унд трикс:
если все элементы в перебираемой строке брать в лоу-кейсе, то вариантов сравнения будет в два раза меньше, а время отводимую на эту операцию сократится.. .

афтор, а чем не устраивает вариант от Denis Bessonov ???
if str='У', 'у', 'Е','е','Ы','ы','А','а','О','о','Э','э','Я','я','И','и','Ю', 'ю'
так делать нельзя!! !
if (str='у' )or(str='е')or... then
блин сам долго с паскалем парился но слава богу он у нас закончился неделу назад а так почти год с лищним изучали