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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2011, 23:33   #1
RsGoLd
 
Регистрация: 25.10.2010
Сообщений: 4
По умолчанию Программа с текстовым файлом

Для указанного текстового файла составьте список слов, которые:
1. встречаются в нем более одного раза. В алфавитном порядке с частотой их повторения.
2. встречаются в нем только один раз. В алфавитном порядке.
3.самое короткое и самое длинное слово, предложение.
я уже прописал и программа находит самое короткое и самое длинное слово, а вот как прописать чтобы находил и выводил 1 и 2 задание не пойму. помогите...

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, StdCtrls, ComCtrls, ExtCtrls;     


type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    Memo1: TMemo;
    OpenDialog1: TOpenDialog;
    RichEdit1: TRichEdit;
    procedure N3Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);



  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function  est_2_prob(s: string): boolean;
  var i: integer;
  begin
  result:=false;
  for i:=1 to length(s)-1 do if (s[i]=' ') and (s[i+1]=' ') then result:=true;
  end;

procedure TForm1.N3Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button1Click(Sender: TObject);

begin
OpenDialog1.Execute;
if opendialog1.FileName <> '' then
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
if memo1.Text<>'' then Button2.Enabled:=true else button2.Enabled:=false;

end;

procedure TForm1.Button2Click(Sender: TObject);

var
i,k,min :integer;
text,text1,slovo,min_slovo,max_slovo:string;
begin

//cчитываем текст
text:=memo1.Text;

//убираем лишние пробелы из этого текста
while est_2_prob(text) do
  begin
  i:=0;
  repeat
  i:=i+1;
  if (text [i] = ' ') and (text[i+1] = ' ') then delete (text, i, 1);
  until i=(length(text)-1);
  end;

//ситуация когда пробелы стоят в начале и конце, то удаляем их
if text[1]=' ' then delete(text,1,1);
if text[length(text)]=' ' then delete(text,length(text),1);

//выдали текст без лишних пробелов
richedit1.Text:=text;

//считем количество слов
k:=0;
text:= richedit1.Text;
for i:=1 to length(text) do
if text [i] = ' ' then k:= k+1;
richedit1.Lines.Add('колличество слов: ' + IntTostr(k+1));

//ищем самое короткое слово
text1:=text;
//ситуация когда слово 1, то оно и будет самым коротким
if (k+1)=1 then richedit1.Text:=richedit1.text+#13+#13+ 'Самое короткое слово: '+text1+ ' оно единственное.' else
  //если же слов больше то
  i:=0;
  repeat i:=i+1 until text[i]=' ';
  min_slovo:=copy(text1,1,i-1);
  delete(text1,1,i);
  while length(text1)<>0 do
    begin
    i:=0;
    repeat
    i:=i+1;
    until (text1[i]=' ') or (i=length(text1));
    slovo:=copy(text1,1,i-1);
    if length(slovo)<length(min_slovo) then min_slovo:=slovo;
    delete(text1,1,i);
    end;
  richedit1.Text:=richedit1.Text+#13+#13+'самое короткое слово: '+min_slovo;

//ищем саоме длиное слово
text1:=text;
//ситуация когда слово 1, то оно и будет самым коротким
if (k+1)=1 then richedit1.Text:=richedit1.text+#13+#13+ 'Самое длиное слово: '+text1+ ' оно единственное.' else
  //если же слов больше то
  i:=0;
  repeat i:=i+1 until text[i]=' ';
  max_slovo:=copy(text1,1,i-1);
  delete(text1,1,i);
  while length(text1)<>0 do
    begin
    i:=0;
    repeat
    i:=i+1;
    until (text1[i]=' ') or (i=length(text1));
    slovo:=copy(text1,1,i-1);
    if length(slovo)>length(max_slovo) then max_slovo:=slovo;
    delete(text1,1,i);
    end;
  richedit1.Text:=richedit1.Text+#13+#13+'самое длиное слово: '+max_slovo;

end;

end.

________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось RsGoLd; 09.11.2011 в 23:58.
RsGoLd вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с текстовым файлом. sanek5 C++ Builder 2 07.07.2011 20:02
Работа с текстовым файлом Саидасаида Паскаль, Turbo Pascal, PascalABC.NET 0 25.05.2011 22:14
Работа с текстовым файлом. tae1980 Microsoft Office Excel 10 29.06.2010 19:16
Работа с текстовым файлом bles Паскаль, Turbo Pascal, PascalABC.NET 3 18.04.2010 01:09
Работа с текстовым файлом Smartbass Паскаль, Turbo Pascal, PascalABC.NET 3 22.05.2009 20:40