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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2009, 20:52   #1
Regina
Пользователь
 
Регистрация: 01.10.2009
Сообщений: 10
По умолчанию массивы в паскале

нужна прога написанная на паскале которая будет считать слова в предложении. код программы киньте плз, буду очень благодарна
Regina вне форума Ответить с цитированием
Старый 02.10.2009, 21:32   #2
Maxs
Заблокирован
 
Регистрация: 06.04.2009
Сообщений: 130
По умолчанию

Цитата:
Сообщение от Regina Посмотреть сообщение
нужна прога написанная на паскале которая будет считать слова в предложении. код программы киньте плз, буду очень благодарна
За слова программа считает любые символы разделенные пробелом, запятой, точкой, ; , ? , ! . Если делать чтобы программа считала именно слова, то тут её нужно подключать к БД слов Русского языка... Надо поточнее описывать задание. Какие знаки должна обрабатывать программа?
Код:
Program asdfsdg;
var
i,k:integer;
s:string;
begin
Writeln('Vvedite predlogenie');
Read(s);
k:=0;
For i:=1 to Length(s) do
begin
if i<Length(s) then begin
if (s[i]=',') or (s[i]='.') or (s[i]=':') or (s[i]=';') or (s[i]='?') or (s[i]='!') then if s[i+1]=' ' then begin
i:=i+2;
k:=k+1;
end
else
k:=k+1;
if (s[i]=' ') then k:=k+1;
end
else
k:=k+1;
end;
Writeln(k);
end.

Последний раз редактировалось Maxs; 02.10.2009 в 21:46.
Maxs вне форума Ответить с цитированием
Старый 02.10.2009, 21:53   #3
.Phoenix
Форумчанин
 
Регистрация: 02.04.2009
Сообщений: 235
По умолчанию

Код:
Program asdfsdg;
var
i,k:integer;
s:string;
begin
Writeln('Vvedite predlogenie');
Read(s);
k:=0;
For i:=1 to Length(s) do
begin
if i<Length(s) then begin
if (s[i]=',') or (s[i]='.') or (s[i]=':') or (s[i]=';') or (s[i]='?') or (s[i]='!') then if s[i+1]=' ' then begin
i:=i+2;
k:=k+1;
end
else
k:=k+1;
if (s[i]=' ') then k:=k+1;
end
else
k:=k+1;
end;
Writeln(k);
end.
Зачем здесь писать
Код:
if i<Length(s) then begin
*********
Код:
i:=i+2;
когда в цикле по параметру i будет по любому увеличиваться вплоть до указанного конечного значения?
Всё гениальное - просто!
.Phoenix вне форума Ответить с цитированием
Старый 02.10.2009, 22:34   #4
Maxs
Заблокирован
 
Регистрация: 06.04.2009
Сообщений: 130
По умолчанию

Цитата:
Сообщение от .Phoenix Посмотреть сообщение
Код:
Program asdfsdg;
var
i,k:integer;
s:string;
begin
Writeln('Vvedite predlogenie');
Read(s);
k:=0;
For i:=1 to Length(s) do
begin
if i<Length(s) then begin
if (s[i]=',') or (s[i]='.') or (s[i]=':') or (s[i]=';') or (s[i]='?') or (s[i]='!') then if s[i+1]=' ' then begin
i:=i+2;
k:=k+1;
end
else
k:=k+1;
if (s[i]=' ') then k:=k+1;
end
else
k:=k+1;
end;
Writeln(k);
end.
Зачем здесь писать
Код:
if i<Length(s) then begin
*********
Код:
i:=i+2;
когда в цикле по параметру i будет по любому увеличиваться вплоть до указанного конечного значения?
Вот это
Код:
if i<Length(s) then begin
для того чтобы он посчитал конечное слово. Смотри else относящееся к этому if . i:=i+2 это для того, чтобы, если стоит пробел после знака (запятой, ...) перескочить его и не считать этот пробел как конец слова. Знаю, что прога вадаст ошибку выхода из рамок массива, если предложение(текст) закончится 1 буквой. Но я таких предложений нигде не встречал. Если все-таки надо от этой ошибки обезопаситься, то можно еще проверить не является ли эта буква предпоследним символом.

Последний раз редактировалось Maxs; 02.10.2009 в 22:37.
Maxs вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массивы в Паскале Dartchuwak Помощь студентам 3 13.12.2009 12:06
массивы в паскале Кипятилка Помощь студентам 6 04.07.2009 15:27
Массивы в Турбо Паскале mela Помощь студентам 2 01.05.2009 13:57
Массивы в паскале xSPiRiTx Помощь студентам 8 04.03.2009 18:08