/ Published in: Pascal

Expand |
Embed | Plain Text
{ тема Юлиного курÑовика по трпп: чаÑтотный анализ текÑта(по предложениÑм) (подÑчитываетÑÑ Ð¾Ñ‚Ð½Ð¾ÑÐ¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñ‡Ð°Ñтота вÑтречаемоÑти в текÑте предложений различной длины(1,2,3...Ñлова). Границами Ñлов Ñв-ÑÑ Ñимволы: /* точка,запÑтаÑ, двоеточие, пробел, точка Ñ Ð·Ð°Ð¿Ñтой, Ñкобки, тире, вопр. и воÑкл. знаки */ . , " ' ; ( ) - ? ! границами предложениÑ- /* точка, вопр. и воÑкл. знаки */ . ? ! ТекÑÑ‚ вводитÑÑ Ð¿Ð¾ выбору Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ñ ÐºÐ»Ð°Ð²Ð¸Ð°Ñ‚ÑƒÑ€Ñ‹ (при Ñтом должна быть возможноÑть запиÑи его в файл), либо из текÑтового файла; вывод результатов- на Ñкран, принтер или в файл по желанию пользователÑ. } { -------------------------------------------------------------------------- } program count; { Ðазвание программы } uses crt; { ИÑпользовать модуль Ð´Ð»Ñ Ñ€Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ñевдографики } type { ÑÐµÐºÑ†Ð¸Ñ Ð¾Ð±ÑŒÑÐ²Ð»ÐµÐ½Ð¸Ñ Ð½Ð¾Ð²Ñ‹Ñ… типов данных } plist = ^tlist; { указатель } tlist = record { запиÑÑŒ } words : integer; { количеÑтво Ñлов } sentences : integer; { количеÑтво предложений } next : plist { указатель на Ñледующий узел } end; { конец запиÑи } var { ÑÐµÐºÑ†Ð¸Ñ Ð¾Ð±ÑŒÑÐ²Ð»ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ… } list, start : plist; { бегающий и начальный указатели на ÑпиÑок } buffer : string; { буффер Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ текÑта } { переменные Ð´Ð»Ñ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ о количеÑтве Ñлов и предложений } words_all, sentences_all, ii, words_count, sentences_count : integer; input_file : text; { указатель на входной файл } state : integer; result : integer; mbuffer : char; { -------------------------------------------------------------------------- } { процедура ищет узел в ÑпиÑке по количеÑтву } procedure Search (words : integer); { принимает количеÑтво Ñлов } begin { начало тела процедуры } list := start; { перемотать указатель } while list <> nil do { пока не конец ÑпиÑка } begin if words = list^.words then { еÑли Ñовпадает то } break { закончить цикл } else list := list^.next; { иначе продолжить } end end; { конец процедуры Search } { -------------------------------------------------------------------------- } procedure Add ( words : integer ); { } var { } l : plist; { } begin { } sentences_count := sentences_count + 1; { } New (l); { } l^.sentences := 1; { } l^.words := words; { } l^.next := nil; { } if start <> nil then { } begin list := start; { } while list^.next <> nil do { } list := list^.next; { } list^.next := l { } end else start := l; { } list := l { } end; { } { -------------------------------------------------------------------------- } procedure Display; { } begin { } if start = nil then { } begin textcolor (red); { } writeLn ('no sentences were analised'); textcolor (yellow); { } exit { } end; list := start; { } textcolor (red); { } write; writeln ( '========================' ); { } textcolor (yellow); { } while list <> nil do { } begin { } writeln ( ' ', list^.words:3, ' (', (list^.words * 100)/words_all:2:2, '%) words in ', list^.sentences:2, ' (', ( list^.sentences * 100)/sentences_all :2:2 , '%) sentences.' ); list := list^.next { } end; textcolor (red); { } writeln ( '========================' ); { } textcolor (yellow); { } writeln ( 'sentences in file: ', sentences_all ); { } writeln ( 'words in file: ', words_all ); { } end; { -------------------------------------------------------------------------- } procedure sentence_done ( words : integer ); { } begin sentences_all := sentences_all + 1; { } search (words); { } if list = nil then { } add(words) { } else list^.sentences := list^.sentences + 1; { } end; { -------------------------------------------------------------------------- } procedure feed_char ( some_char : char ); { } begin case some_char of { } ',', { запÑÑ‚Ð°Ñ } ' ', { пробел } ';', { точка Ñ Ð·Ð°Ð¿Ñтой } '(', { Ð¾Ñ‚ÐºÑ€Ñ‹Ð²Ð°ÑŽÑ‰Ð°Ñ Ñкобка } ')', { Ð·Ð°ÐºÑ€Ñ‹Ð²Ð°ÑŽÑ‰Ð°Ñ Ñкобка } '-': { тире } begin { увеличить Ñчетчик Ñлов } words_count := words_count + 1; words_all := words_all + 1; end; '.', { точка } '?', { вопр. знак } '!': { воÑкл. знак } begin { } { } words_count := words_count + 1; sentence_done ( words_count ); words_all := words_all + 1; words_count := 0; end; end; end; { -------------------------------------------------------------------------- } { -------------------------------------------------------------------------- } { -------------------------------------------------------------------------- } begin sentences_all := 0; { } words_all := 0; { } sentences_count := 0; { } words_count := 0; { } textbackground (blue); { УÑтановить Ñиний цвет фона } textcolor (white); { УÑтановить желтый цвет текÑта } clrscr; state := 0; while state = 0 do begin writeln('From where?'); writeln(' 1-file;'); writeln(' 2-keyboard'); writeln(' 3-keyboard + write text to file'); read(state); end; clrscr; result := 0; while result = 0 do begin writeln('Where to display results?'); writeln(' 1-screen;'); writeln(' 2-printer;'); writeln(' 3-file;'); read(result); end; clrscr; if state = 1 then begin assign ( input_file, 'text_en.txt' ); { } reset ( input_file ); { } while not EOF ( input_file ) do { } begin readln ( input_file, buffer ); { } writeln ( buffer ); { } for ii := 1 to ord(buffer[0]) do { } feed_char( buffer[ii] ); end; display(); end else if state = 2 then begin mbuffer := #0; while mbuffer <> #27 do begin mbuffer := readKey; feed_char( mbuffer ); write(mbuffer); end; display(); end; textcolor (white); { } writeln('press ENTER'); { } readln { } end. { }
You need to login to post a comment.