Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Синтаксис
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.03.2012, 19:56
sasha.belyi sasha.belyi вне форума
Прохожий
 
Регистрация: 13.03.2012
Сообщения: 8
Репутация: 10
По умолчанию Помогите с обработкой строк в паскале!

Задача: Дана строка. Определить сколько слов в строке начинается с той же буквы, которой закончилось предыдущее предложение.

Вот составил программу, но она почему то не считает первое слово, если оно начинается на последнюю букву предлжения.
Код:
program stroka;
uses crt;
var a:string; i,k:integer;
begin
clrscr;
Writeln ('Введите строку: ');
read (a);
k:=0;
for I:=1 to length(a) do
if (a[i]=a[length(a)]) and (a[i-1]=' ') then k:=k+1;
Writeln ('Кол-во слов равно: ',k);
readkey;
end.
Админ: Не забываем про теги!

Подскажите что не так пожалуйста!

Последний раз редактировалось Admin, 14.03.2012 в 20:59.
Ответить с цитированием
  #2  
Старый 14.03.2012, 20:15
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

1) Ваша программа будет считать количество слов, начинающихся с той же буквы, на которую кончается текущее предложение. Так и задумано?
2) Нужно модифицировать проверку:
Код:
if (a[i]=a[length(a)]) and ((i=1)or(a[i-1]=' ')) then 
     k:=k+1;
Поскольку для первого слова (когда i=1) a[i-1] не существует.
Или второй вариант, более правильный:
Код:
if (a[i]=a[length(a)]) then
 if (i=1)
     k:=k+1
 else if (a[i-1]=' ') then   // чтобы для i=1 не обращаться к a[i-1]; 
     k:=k+1;                // на практике компилятор, возможно, и в первом случае 
                           // обращаться не будет, когда i=1.  
Кстати, если предложение будет начинаться с пробелов, программа работать не будет. Предварительно надо их убрать (если нужно).
Кстати v2, в конце то же самое. Если на конце знаки препинания или пробелы - не заработает. Их бы тоже убрать.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 14.03.2012 в 20:20.
Ответить с цитированием
  #3  
Старый 14.03.2012, 20:22
sasha.belyi sasha.belyi вне форума
Прохожий
 
Регистрация: 13.03.2012
Сообщения: 8
Репутация: 10
По умолчанию

Спасибо огромное, то что надо)
Ответить с цитированием
  #4  
Старый 30.03.2012, 20:23
qwqw21 qwqw21 вне форума
Прохожий
 
Регистрация: 05.02.2012
Сообщения: 2
Репутация: -55
По умолчанию

Только в нашей фирме. Высокое качество клининговых услуг обеспечивается ответственной работой целого штата профессиональных сотрудников, располагающих самым современным оборудованием. За подробностями сюда:
http://service-cleanings.ru/
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:19.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter