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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2014, 15:43   #1
Наташка1
Новичок
Джуниор
 
Регистрация: 21.11.2014
Сообщений: 1
По умолчанию Задача в Delphi)

Дана последовательность слов длинной N. Слова состоят из строчных латинских букв и разделены одним или несколькими пробелами. Получить новую последовательность, путем исключения слов содержащих не более двух различных букв. Подсчитать количество слов в новой последовательности.



Пожалуйста помогите. И если нетрудно, можно написать комментарии, желательно к каждому действию заранее спасибо!
Наташка1 вне форума Ответить с цитированием
Старый 21.11.2014, 17:56   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Делфи я тебе не обещаю, но идею подкину:
Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs;

type

  { TForm1 }

  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
    function Check(i:integer):Boolean;
  public
    { public declarations }
  end;

var  s,k:string;
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
 s:='слова состоят из строчных латинских букв и разделены одним или несколькими пробелами';
 s:=s+' ';
 k:='';
 repeat
  //Находим пробел
  i:=pos(' ',s);
  //Считаем частоту букв
  if not Check(i-1) then k:=k+copy(s,1,i); //Если нет повторов - запоминаем слово
  //Берем следующее слово
  delete(s,1,i);
 until i=0;
 //Показываем очищенную строку
 ShowMessage(k);
end;

function TForm1.Check(i: integer): Boolean;
var a:array['а'..'я'] of integer; j:integer; c:char;
begin
 Result:=false;
 FillChar(a,Length(a)*SizeOf(integer),0);
 //Выявляем частоту символов
 for j:=1 to i do inc(a[s[j]]);
 //Выясняем какие из них повторялись
 for c:='а' to 'я' do
  if a[c]>1 then begin
    //И если повторялись говорим - "не запоминать слово"
    Result:=true; break;
  end;
end;

end.
Твоя задача: Проанализировать. Попробовать. Вникнуть.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.11.2014, 18:15   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Делфи я тебе не обещаю, но идею подкину
ну зачем такие сложности, есть же TStringList.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на Delphi 7 Юрий2009 Помощь студентам 4 07.05.2009 14:02
Задача по Delphi gremt Помощь студентам 2 06.05.2009 13:30
Задача на Delphi stscolt Помощь студентам 1 05.05.2009 21:54