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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.06.2012, 20:43   #1
RNR
Новичок
Джуниор
 
Регистрация: 05.06.2012
Сообщений: 2
По умолчанию Поиск повторяющихся символов

Доброго времени суток всем.
будьте так добры проверьте код программы,подскажите что добавить.
программа должна выводить кол-во слов в которых есть повторяющиеся символы(причем не только когда например "програММа" 2 буквы М,а и для "КроКодил"),и можно ли из 2 и 3 слова составить 1.

Код:
var
  a,b , c:string[255];
  i,n, s:Integer;
  k:array [1..255] of Char;



procedure TForm1.CheckBox1Click(Sender: TObject);
begin
 a:=Edit1.Text ;
 b:=Edit2.Text ;
 c:=Edit3.Text ;
 begin
 for i:=1 to Length (a) do
 if Pos(a[i],Copy(a,i,1))<>0 then
  memo1. Lines .Add('Слово с повторяющимся буквами ='+a) ;
 end;
  begin
 for i:=1 to Length (b) do
 if Pos(b[i],Copy(b,i,1))<>0 then
  memo1. Lines .Add('Ñëîâî ñ ïîâòîðþùèìåñÿ áóêâàìè='+b) ;
 end;
  begin
 for i:=1 to Length (c) do
 if Pos(c[i],Copy(c,i,1))<>0 then
  memo1. Lines .Add('Ñëîâî ñ ïîâòîðþùèìåñÿ áóêâàìè='+c) ;
 end;
 end;
procedure TForm1.CheckBox2Click(Sender: TObject);
 var m,j:integer;
     f1,f2,f3:boolean;

begin
  a:=Edit1.Text ;
  b:=Edit2.Text ;
  c:=Edit3.Text ;
 f1:=True;
  for m:=1 to length(a) do begin
  f2:=false;
  f3:=False;
   for j:=1 to Length(b) do
   if b[j]=a[m] then f2:=true;
    for j:=1 to Length(c) do
   if c[j]=a[m] then f3:=true;
   if (b[j]<>a[m])and (c[j]<>a[m]) then
      begin f1:=false;

 end;
 end;
 if f1 then memo1 .Lines.Add('слово '+a+' составить можно.')
    else memo1 .Lines.Add('слово '+a+' составить нельзя.');
end;
______
Заранее благодарна

Последний раз редактировалось Stilet; 25.06.2012 в 10:10.
RNR вне форума Ответить с цитированием
Старый 25.06.2012, 02:43   #2
zvoronz
Пользователь
 
Регистрация: 03.01.2011
Сообщений: 49
По умолчанию

Совсем не понял логику работы вашей проверки
Вот мой вариант решения
Код:
unit main;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    Memo1: TMemo;
    procedure CheckBox1Click(Sender: TObject);
    procedure CheckBox2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  Array255Bolean = array [1..255] of Boolean;

var
  Form1: TForm1;
  a,b , c:string[255];
  i,n, s:Integer;
  k : Array255Bolean;

implementation

{$R *.dfm}

procedure Clean(var ar : Array255Bolean);
var
  i : Integer;
begin
  for i := 1 to 255 do
    ar[i] := False;
end;

function Check (c : Char; var ar : Array255Bolean) : Boolean;
var
  i : Integer;
begin
  Check := ar[ord(c)];
  ar[ord(c)] := True;
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
a:=Edit1.Text ;
b:=Edit2.Text ;
c:=Edit3.Text ;
begin
  Clean(k);
  for i:=1 to Length (a) do
  if Check(a[i], k) then
  begin
    memo1. Lines .Add('Ñëîâî ñ ïîâòîðÿþùèìñÿ áóêâàìè = '+a);
    Break;
  end;
  Clean(k);
  for i:=1 to Length (b) do
  if Check(b[i], k) then
  begin
  memo1. Lines .Add('Ñëîâî ñ ïîâòîðÿþùèìñÿ áóêâàìè = '+b) ;
  Break;
  end;

  Clean(k);
  for i:=1 to Length (c) do
  if Check(c[i], k) then
  begin
  memo1. Lines .Add('Ñëîâî ñ ïîâòîðÿþùèìñÿ áóêâàìè = '+c) ;
  Break;
  end;
end;

end;

procedure TForm1.CheckBox2Click(Sender: TObject);
var m,j:integer;
f1,f2,f3:boolean;
begin
a:=Edit1.Text ;
b:=Edit2.Text ;
c:=Edit3.Text ;
f1:=True;
for m:=1 to length(a) do begin
f2:=false;
f3:=False;
for j:=1 to Length(b) do
if b[j]=a[m] then f2:=true;
for j:=1 to Length(c) do
if c[j]=a[m] then f3:=true;
if (b[j]<>a[m])and (c[j]<>a[m]) then f1:=false;
end;
if f1 then memo1 .Lines.Add('ñëîâî '+a+' ñîñòàâèòü ìîæíî.')
else memo1 .Lines.Add('ñëîâî '+a+' ñîñòàâèòü íåëüçÿ.');
end;

end.
и вот проект в Delphi7, можете потестить ответить так я понял или нет.
DuplicateChars.zip
zvoronz вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление повторяющихся символов из строки kametto Помощь студентам 9 24.04.2013 07:27
Замена повторяющихся символов C# MyXa C# (си шарп) 7 02.02.2011 14:32
Замена во вводимой строке всех повторяющихся символов их восьмеричными представлениями и вывод результата AquaticSoul Общие вопросы C/C++ 5 08.03.2010 11:51
Замена во вводимой строке всех повторяющихся символов их восьмеричными представлениями. С++ AquaticSoul Помощь студентам 4 07.03.2010 22:48
Поиск повторяющихся значений Flangini Microsoft Office Excel 23 22.02.2008 15:57