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


Гость






Хитрый какой... То есть, для того, чтобы текст показывался в консоли нормально, ты догадался вызвать Rus, а то, что пользователь вводит ответ другой кодировке - не догадался? Либо делай обратное преобразование полученного от пользователя ответа, и потом, как ты делал - сравнивай посимвольно, либо так:

{ ...  }
var
alpha: string;

begin
write (rus('введите текст - '));
readln (s);
summa:=0;
alpha := rus('АЕИОУЫЮЭЯаеиоуыюэя');
for i:=1 to Length(s) do
if Pos(s[ i ], alpha) > 0 then summa:=summa+i;
writeln (rus('текст-" '),s,' "');
writeln (rus('сумма номеров='),summa);
readln;
end.
Понимаешь, что изменилось?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Бывалый
***

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

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


Цитата(volvo @ 28.03.2010 12:03) *

Хитрый какой... То есть, для того, чтобы текст показывался в консоли нормально, ты догадался вызвать Rus, а то, что пользователь вводит ответ другой кодировке - не догадался? Либо делай обратное преобразование полученного от пользователя ответа, и потом, как ты делал - сравнивай посимвольно, либо так:

{ ...  }
var
alpha: string;

begin
write (rus('введите текст - '));
readln (s);
summa:=0;
alpha := rus('АЕИОУЫЮЭЯаеиоуыюэя');
for i:=1 to Length(s) do
if Pos(s[ i ], alpha) > 0 then summa:=summa+i;
writeln (rus('текст-" '),s,' "');
writeln (rus('сумма номеров='),summa);
readln;
end.
Понимаешь, что изменилось?

понял! в моем варианте программа никак не могла найти заданные символы в веденной строке... не догодался еще раз использовать rus... спасибо

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

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


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

 





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