![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Задача: Дана строка. Определить сколько слов в строке начинается с той же буквы, которой закончилось предыдущее предложение.
Вот составил программу, но она почему то не считает первое слово, если оно начинается на последнюю букву предлжения. Код:
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
|
||||
|
||||
|
1) Ваша программа будет считать количество слов, начинающихся с той же буквы, на которую кончается текущее предложение. Так и задумано?
2) Нужно модифицировать проверку: Код:
if (a[i]=a[length(a)]) and ((i=1)or(a[i-1]=' ')) then
k:=k+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, в конце то же самое. Если на конце знаки препинания или пробелы - не заработает. Их бы тоже убрать. Последний раз редактировалось Bargest, 14.03.2012 в 20:20. |
|
#3
|
|||
|
|||
|
Спасибо огромное, то что надо)
|
|
#4
|
|||
|
|||
|
Только в нашей фирме. Высокое качество клининговых услуг обеспечивается ответственной работой целого штата профессиональных сотрудников, располагающих самым современным оборудованием. За подробностями сюда:
http://service-cleanings.ru/ |