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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 28.03.2010 12:03
Сообщение #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.
Понимаешь, что изменилось?
 К началу страницы 
+ Ответить 
marwell
сообщение 28.03.2010 12:17
Сообщение #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 - 28.03.2010 12:17
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



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