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

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

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

> Составьте программу вычисления суммы номеров мест, на которых в слове S стоят гласные буквы., Составьте программу вычисления суммы номеров мест, на которых в слове
marwell
сообщение 27.03.2010 19:39
Сообщение #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 - 27.03.2010 19:41
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Lapp
сообщение 27.03.2010 23:06
Сообщение #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 
 К началу страницы 
+ Ответить 
marwell
сообщение 28.03.2010 10:48
Сообщение #3


Бывалый
***

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

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


Цитата(Lapp @ 27.03.2010 23:06) *

Для английских слов можно вот как-то так:
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 мин.
Еще вариант - просто перечислить в условии мелкие буквы тоже:
  for i:=1 to Length(s) do
if s[i] in ['А','Е','И','О','У','Ы','Ю','Э','Я','а','е','и','о','у','ы','ю','э','я'] then
n:=n+i;


большое спасибо good.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



- Текстовая версия 20.07.2025 10:43
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"