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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2012, 22:59   #1
Vadim_rush
Пользователь
 
Регистрация: 29.03.2012
Сообщений: 18
Восклицание написать на делфи программу !

Написать программу для подсчета числа слов в тексте Длину текста ограничить 45-ю символами Проверить работу программы на тексте : "Белеет парус одинокий в тумане моря голубом". Тест вводится с клавиатуры ( Рушение задачи должна быть с использованием функции, определяющее число слов в заданном тексте ) И если не сложно поясните как решалось ! помогите бездарному студенту 1 курса!
Vadim_rush вне форума Ответить с цитированием
Старый 12.04.2012, 07:30   #2
Vadim_rush
Пользователь
 
Регистрация: 29.03.2012
Сообщений: 18
По умолчанию

помогите кто нибудь пожалуйста!
Vadim_rush вне форума Ответить с цитированием
Старый 12.04.2012, 07:36   #3
denisbrain
Форумчанин
 
Регистрация: 29.05.2011
Сообщений: 449
По умолчанию

Код:
// GetWordCount - определяет кол-во слов в строке S
// S-строка
// Len ограничения на длину слова если 0 то ограничения нет
// пример если Len равен 3 то кол-во слов длина которых больше или ровна 3

Function GetWordCount(s:string;len:integer):integer;
 var y,x:integer;
    s2:string;
begin
  y:=0;
  s2:='';
  result:=0;
  for X:=1 to length(s) do begin
  // если символ меньше пробела и входит в список разделителей
    if (ord(s[x])<33) or (s[x] in [#146,#91,#93,#40,#41,#123,#125,#58,#44,#150,#151,#133,#33,
                      #46,#45,#145,#146,#147,#148,#171,#187,#39,#59,#47,#47,#32,
                      #183,#38,#64,#42,#92,#149,#94,#169,#164,#134,#135,#176,
                      #35,#185,#37,#137,#182,#174,#167,#126,#153,#95,#124,#166,'0','1','2','3','4','5','6','7','8','9'])
                      // или число
                      or (x=length(s)) // или конец списка то
                      then
                       begin
                       if (s2<>'') and ((len=0) or (length(s2)>=len)) then begin
                             y:=y+1; // добавить слово
                             end;
                             s2:='';
                          end else s2:=s2+s[x];

  end;
  result:=y;
end;
задания на pascal/delphi ICQ 368254335
Tel +79177425326 mail denis-naymov1985(at)mail.ru login skype denis.new.skype
denisbrain вне форума Ответить с цитированием
Старый 12.04.2012, 07:53   #4
Vadim_rush
Пользователь
 
Регистрация: 29.03.2012
Сообщений: 18
По умолчанию

denisbrain Спасибо вам!!!!!!!!!!!
Vadim_rush вне форума Ответить с цитированием
Старый 12.04.2012, 10:44   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

мда... код, конечно, сносит башню! Хоть и работает

во-первых, я не смог понять, зачем понадобился второй параметер в функции (где-то шла речь о том, что однобуквенные слова не являются словами?!) и это сразу же привело к необходимости введения переменной s2 (хотя она не нужна).

во-вторых, ваша "хакерская" проверка на разделители приводит к тому, что данный код НЕВЕРНО работает в кодировках, отличных от ANSI ( Windows-1251), например, в TurboPascal'е.


а в остальном, всё хорошо!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать программу в Делфи.Массивы. Rinka1 Помощь студентам 1 01.12.2011 22:25
помогите написать программу в делфи. (рекурсия) Snord Помощь студентам 6 31.05.2011 21:39
в делфи написать программу счисления ангелочик Помощь студентам 1 16.11.2010 23:53