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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2012, 22:19   #1
H4t
Пользователь
 
Регистрация: 14.11.2012
Сообщений: 31
По умолчанию Pascal. String

Дана строка, состоящая из слов, набранных заглавными буквами и разделенных пробелами (одним или несколькими). Найти количество слов, которые начинаются и заканчиваются одной и той же буквой.

Код:
program problem;
uses crt;
const literi = ['A'..'Я','A'..'Z'];

var
stroka, Slovo,x: string; simvol: char;
i,k,error : integer;

begin
clrscr;
Write('Введите предложение: ');
Readln(stroka);
for i:=1 to length(stroka) do
if (ord(Stroka[i])<=90)and(ord(stroka[i])>=65) or
(ord(Stroka[i])<=159)and(ord(stroka[i])>=128) then
begin

k := 0;

for i := 1 to length(stroka) do
if stroka[i] <> ' ' then Slovo := Slovo + stroka[i]
else if slovo[1] = stroka[i-1] then begin
inc(k);
Slovo := '';
end;
if Slovo[1] = stroka[length(stroka)] then begin
inc(k);
write('Кол-во слов c одинаковой начальной и конечной буквой: ',k);
Readln;
end;
end
else begin
write(' Вы ввели не то, что требует условие ! ');
break;
end;

end.
Проблема в следующем - если вводить заглавные английские буквы - то все работает, если же русские заглавные (что удовлетворяет условию задачи) - то все равно выходит ошибка, помогите пожалуйста разобраться, почему с русскими заглавными буквами программа не работает.
H4t вне форума Ответить с цитированием
Старый 22.11.2012, 22:38   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,381
По умолчанию

Только одно из замечаний:
У Вас есть цикл с параметром i, в теле которого находится условный оператор, в ветке которого вновь используется оператор цикла с параметром i. Выполняется переинициализация параметра цикла в его теле. Это недопустимо.
Код:
for i:=1 to length(stroka) do
if (ord(Stroka[i])<=90)and(ord(stroka[i])>=65) or
(ord(Stroka[i])<=159)and(ord(stroka[i])>=128) then
begin

k := 0;

for i := 1 to length(stroka) do
if stroka[i] <> ' ' then Slovo := Slovo + stroka[i]
...
С остальным надо разбираться ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 22.11.2012, 23:10   #3
studen
Пользователь
 
Регистрация: 21.05.2012
Сообщений: 88
По умолчанию

Русские буквы в кодировке паскаля имеют разрыв, это можно проверить выводом в цикле от 0 до 255 всех символов. Мб причина в этом.
studen вне форума Ответить с цитированием
Старый 22.11.2012, 23:30   #4
Vlad0n
Пользователь
 
Регистрация: 15.09.2012
Сообщений: 26
По умолчанию

Да, дело в диапазоне литер самого паскале. Русские заглавные примерно в таком диапазоне: 190-223.
Vlad0n вне форума Ответить с цитированием
Старый 23.11.2012, 07:28   #5
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Начинали вроде правильно - с множеств, че дальше навертели-то? Я бы поступал по-другому. Просто резал бы строку с помощью функции. То есть функция бы брала слово и удаляла его вместе с разделительными пробелами из входящей строки. А уже во взятом слове проверялись бы первый и последний символы с Вашим множеством literi, который Вы объявили, но почему-то решили не использовать в программе.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 23.11.2012 в 07:33.
Utkin вне форума Ответить с цитированием
Старый 23.11.2012, 09:44   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

есть решение аналогичной задачи.
Цитата:
Ввести текст и определить, сколько слов начинается и заканчивается на одинаковую букву. Собрать эти слова в новое предложение, удалив их из старого текста
смотрите мой код в теме: код string
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Шифровка. String. Pascal. ArsGo Помощь студентам 3 21.09.2011 01:58
тип данных string на pascal knopach Помощь студентам 2 15.12.2010 16:28
Pascal (тип String и массивы). 4otenado Помощь студентам 8 25.12.2009 18:11
String(Файл) - PASCAL Andrux Паскаль, Turbo Pascal, PascalABC.NET 0 07.06.2009 18:07