Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2015, 11:11   #1
alex377
Новичок
Джуниор
 
Регистрация: 02.05.2015
Сообщений: 5
По умолчанию Определить каких букв - согласные\гласных - больше в данном тексте

Помогите с еще одной задачей в паскале
Дан текст из строчных латинских букв, за которым следует точка. Определить, каких букв – гласных (a, e, i, o, u) или согласных – больше в этом тексте.


где то находил следующий код:

Код:
var i,gl,sogl:integer;
s:string;
begin
s:='assuy s s q a aa';
 
for i:=1 to length(s) do
if (s[i]='a') or (s[i]='e') or (s[i]='i') or (s[i]='o') or (s[i]='u') or (s[i]='y') then inc(gl)
 else if s[i]<>' 'then inc(sogl);
if gl>sogl then writeln('Гласных больше= ',gl)
           else
               if gl=sogl then writeln('Они равны = ', sogl)
                          else writeln('Согласных больше = ',sogl);
 
end.
но программа по сей видимости работает не исправно.
alex377 вне форума Ответить с цитированием
Старый 03.05.2015, 12:00   #2
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Здесь все правильно!
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 03.05.2015, 13:00   #3
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Нет, тут надо поправлять, поскольку строка ограничена точкой .
В приведённом коде точка попадает в согласные
Например, ...
Код:
...
else if ((s[i]<>' ') OR (s[i]<>'.')) then inc(sogl);
...

Как-то так, ...
PS: Поскольку условие конкретное, то и так сойдёт
Но, по всей видимости, правильнее [выполнить разделение на гласные и согласные] через множество и оператор in или через строки и функцию Pos() ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 03.05.2015, 14:39   #4
ArrowSoft
Пользователь
 
Аватар для ArrowSoft
 
Регистрация: 03.05.2015
Сообщений: 19
По умолчанию

Код:
Program Bukvi;
var glas,soglas: set of char; st: string;
ii,len,glas1,soglas1 : byte;
begin
glas:= ['а','е','ё','и','о','у','э','ю','я'];
soglas := ['б'..'д','ж','з','к'..'н','п'..'т','ф'..'щ'];
write('Введи строку '); readln(st);
len := length (st); glas1:=0; soglas1:=0;
for ii:= 1 to len do
begin
if st[ii] in glas then inc(glas1);
if st[ii] in soglas then inc(soglas1);
end;
writeln('Гласных: ',glas1);
writeln('Согласных: ',soglas1);
end.

Последний раз редактировалось Stilet; 03.05.2015 в 15:09.
ArrowSoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача: Строка содержит произвольный русский текст. Проверить, каких букв в нем больше: гласных или согласных Backward Паскаль, Turbo Pascal, PascalABC.NET 14 13.05.2013 20:46
каких слов в тексте больше vitaxa3581 Общие вопросы C/C++ 1 18.01.2013 16:44
Определить cлово, в котором больше всего гласных букв. [Алёнка] Паскаль, Turbo Pascal, PascalABC.NET 1 05.12.2011 13:02
определить каких букв больше в этом тексте Aimet Паскаль, Turbo Pascal, PascalABC.NET 2 16.06.2011 22:22
Строка содержит произвольный русский текст. Проверить, каких букв в нем больше: гласных или согласных. Михей91 Общие вопросы C/C++ 1 07.01.2010 16:57