IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Составьте программу вычисления суммы номеров мест, на которых в слове S стоят гласные буквы., Составьте программу вычисления суммы номеров мест, на которых в слове
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 198
Пол: Мужской

Репутация: -  1  +


Составьте программу вычисления суммы номеров мест, на которых в слове S стоят гласные буквы. Есть кое-какие мысли, вот
 function Rus(mes: string):string;
var i: integer;
begin
for i:=1 to length(mes) do
case mes [i] of
'А'..'п': mes[i]:=chr(Ord (mes [i])-64);
'р'..'я': mes[i]:=chr(ord (mes[i])-16);
end;
rus:=mes;
end;

var s:string;
i,summa:integer;
begin
write (rus('введите текст - '));
readln (s);
summa:=0;
for i:=1 to length (s) do
case s[i] of
'а': summa:=summa+1;
'е': summa:=summa+1;
'и': summa:=summa+1;
'о': summa:=summa+1;
'у': summa:=summa+1;
'ы': summa:=summa+1;
'ю': summa:=summa+1;
'э': summa:=summa+1;
'я': summa:=summa+1;
end;
writeln (rus('текст-" '),s,' "');
writeln (rus('сумма номеров='),summa);
readln;
end.
Но программа выдает 0. Помогите разобраться

Добавлено через 5 мин.
ой, только сейчас понял, что я написал blink.gif case вместе с for-ом blink.gif вот дурак

Сообщение отредактировано: marwell -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Для английских слов можно вот как-то так:
function SumVowelPos (s: string): integer;
var
i,n: integer;
begin
n:=0;
for i:=1 to Length(s) do if UpCase(s[i]) in ['A','E','I','O','U','Y'] then n:=n+i;
SumVowelPos:=n
end;

Для русского языка нужно вместо UpCase использовать свою функцию.

Добавлено через 2 мин.
кстати, case можно записать короче:
case s[i] of
'а','е','и','о','у','ы','ю','э','я': summa:=summa+i;
end;



Добавлено через 8 мин.
Цитата(Lapp @ 27.03.2010 23:06) *
Для русского языка нужно вместо UpCase использовать свою функцию.
Еще вариант - просто перечислить в условии мелкие буквы тоже:
  for i:=1 to Length(s) do
if s[i] in ['А','Е','И','О','У','Ы','Ю','Э','Я','а','е','и','о','у','ы','ю','э','я'] then
n:=n+i;


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 15.06.2024 12:53
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name