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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Внимание! Есть замечания модератора по теме: Название темы по правилам форума должно адекватно отражать суть решаемой задачи/проблемы.
Старый 18.04.2012, 04:26   #1
yuyuli
 
Регистрация: 01.04.2012
Сообщений: 5
По умолчанию Программа, которая для вводимого текста (строки) подсчитывает количество слов, разделенных пробелами

Программа, которая для вводимого текста (строки) подсчитывает колличество слов, разделенных пробелами. Помогите написать программу полностью. Спасибо.
yuyuli вне форума Ответить с цитированием
Старый 18.04.2012, 08:00   #2
denisbrain
Форумчанин
 
Регистрация: 29.05.2011
Сообщений: 449
По умолчанию

Код:

uses crt;
type
Tpoint=record
 x,y:integer;
end;

var
  WordEnd:array[1..60] of char;
  
Procedure init; // задаем массив знаков разделителей
begin
     WordEnd[1]:='’';WordEnd[2]:='[';WordEnd[3]:=']';WordEnd[4]:='(';WordEnd[5]:=')';
     WordEnd[6]:='{';WordEnd[7]:='}';WordEnd[8]:=':';WordEnd[9]:=',';WordEnd[10]:='–';
     WordEnd[11]:='—';WordEnd[12]:='…';WordEnd[13]:='!';WordEnd[14]:='.';WordEnd[15]:='-';
     WordEnd[16]:='‘';WordEnd[17]:='’';WordEnd[18]:='“';WordEnd[19]:='”';WordEnd[20]:='«';
     WordEnd[21]:='»';WordEnd[22]:=#39;WordEnd[23]:=';';WordEnd[24]:='/';WordEnd[25]:='/';
     WordEnd[26]:=' ';WordEnd[27]:='·';WordEnd[28]:='&';WordEnd[29]:='@';WordEnd[30]:='*';
     WordEnd[31]:='\';WordEnd[32]:='•';WordEnd[33]:='^';WordEnd[34]:='©';WordEnd[35]:='¤';
     WordEnd[36]:='†';WordEnd[37]:='‡';WordEnd[38]:='°';WordEnd[39]:='#';WordEnd[40]:='№';
     WordEnd[41]:='%';WordEnd[42]:='‰';WordEnd[43]:='¶';WordEnd[44]:='®';WordEnd[45]:='§';
     WordEnd[46]:='~';WordEnd[47]:='™';WordEnd[48]:='_';WordEnd[49]:='|';WordEnd[50]:='¦';
     WordEnd[51]:='0';WordEnd[52]:='1';WordEnd[53]:='2';WordEnd[54]:='3';WordEnd[55]:='4';
     WordEnd[56]:='5';WordEnd[57]:='6';WordEnd[58]:='7';WordEnd[59]:='8';WordEnd[60]:='9';
 end;

Function SimvolBreakWord(s:char):boolean; // Символ s:char - является знаком припенания?
var x:integer;
begin
result:=false;
if s=' ' then result:=true;
//   for x:=1 to 60 do
//     if s=WordEnd[x] then begin result:=true; exit; end;
end;


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 (SimvolBreakWord(s[x])) 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;
// вернуть позицию слова номер index из строки s
Function GetPosIndex(s:string;index:integer;len:integer):Tpoint;
var y,x:integer;
    s2:string;
begin
  y:=0;
  s2:='';
  result.X:=1;
  result.y:=0;
  for X:=1 to length(s) do begin
if (ord(s[x])<33) or (SimvolBreakWord(s[x])) or (x=length(s)) then
                       begin
                       if not ((SimvolBreakWord(s[x])) or (ord(s[x])<33)) then s2:=s2+s[x];
                       if (s2<>'') and ((len=0) or (length(s2)>=len))  then begin
                             y:=y+1;
                             if y=index then begin
                               result.y:=length(s2);
                               exit;
                             end
                             end;
                             s2:='';
                          end
                          else begin
                          if s2='' then result.X:=x; // запоминаем позицию начала слова
                          s2:=s2+s[x]; // копируем слово

                          end;


  end;

end;

// получить слово номер
Function GetSlovoIndex(s:string;index:integer;len:integer):string;
var pr:Tpoint;
begin
    pr:=GetPosIndex(s,index,len);
    if pr.X>0 then
    if pr.y>0 then result:=copy(s,pr.x,pr.y);

end;

var wCount:integer; // кол-во слов
    stexT:string; // текст
    x:Integer;
    s:string;
begin
  clrscr;
  init; // инициализация массива разделителей
  stexT:='cортировка методом bubbles (пузырьков)';
  Writeln('Введите текст ');
  readln(s);
  if s=' ' then s:=stexT;
  wCount:=GetWordCount(stexT,0); // получаем кол-во слов в тексте stexT
  Writeln('Кол-во слов в тексте "'+stext+'" ', WCount);
  
  Writeln('Номер; Слово');
  for x:=1 to wCount do
  Writeln(X:4,';  "',GetSlovoIndex(stexT,x,0)+'"');

end.
для простаты ( если разделены только пробелами ) можно выкинуть var

WordEnd:array[1..60] of char;
Procedure init;
задания на pascal/delphi ICQ 368254335
Tel +79177425326 mail denis-naymov1985(at)mail.ru login skype denis.new.skype
denisbrain вне форума Ответить с цитированием
Старый 18.04.2012, 08:15   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
для простаты ( если разделены только пробелами ) можно выкинуть var
Денис, вы хотели сказать "для простоты"

а во-вторых, я вам по поводу вашей программы написал комментарий - тут

Последний раз редактировалось Serge_Bliznykov; 18.04.2012 в 08:17.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строки в Delphi: строка символов, состоящая из десятичных цифр, разделенных пробелами. Вывести числа в возрастающем порядке Dashylia Помощь студентам 2 18.03.2012 14:03
Дана последовательность слов разделенных пробелами, удалить из нее повторные вхождения слов.С++ Bullrock Помощь студентам 4 01.03.2012 13:16
Программа которая подсчитает количество слов в тексте Мария Сафонова Помощь студентам 5 28.03.2011 07:42
программа которая подсчитывает количество пустых строк в файле Вадим ы Помощь студентам 3 21.08.2010 08:32
Написать программу которая для заданного символьного ряда подсчитывает количество слов! komarvl Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 11.12.2009 01:42