Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для KoRNeT46RuS
1 / 1 / 1
Регистрация: 07.03.2012
Сообщений: 78

Помогите перевести из Delphi в C++

15.05.2012, 23:18. Показов 577. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Если кто может, буду очень благодарен. Или хотя бы назовите цену.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
    T   : String;
    S   : String;
    i,j  : longint;
    n,m : longint;
    v,w : longint;
    k   : longint;
const P  : longint = 7919; {1000-е простое число}
     D : longint = 256; {(количество всех возможных значений символьного типа char)}
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 
 {Ввод текста и образца}
  T:=Edit1.Text;
    S:=Edit2.Text;
    n:=Length(T);
    m:=Length(S);
 v:=0;
 w:=0;
 for i:=1 to m do {вычисление v и w}
 begin
  v:=(v*D+ord(S[i])) mod P; {ord преобразует символ в число}
  w:=(w*D+ord(T[i])) mod P;
 end;
k:=1;
 for i:=1 to m-1 do
 k:=k*D mod P; {k имеет значение Dm-1 mod P}
 for i:=m+1 to n+1 do
  begin
  if w=v then {если числа равны, то строки принадлежат одному классу, и надо проверить совпадают ли они}
   begin
   j:=0;
   while (j<m) and (S[j+1]=T[i-m+j]) do
    j:=j+1;
   if j=m then {окончательная проверка}
    ShowMessage('Образец входит в текст начиная с символа № '+inttostr(i-m));
   end;
  if i<=n then
  w:=(d*(w+P-(ord(T[i-m])*k mod P))+ord(T[i])) mod P;
 end;
 
end;
 
end.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Panel1: TPanel;
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  Wrd1,Wrd2: String;
  j,i,k,i0: Integer;
  d : Array['a'..'z'] of Integer;
  S : Array[0..255] of Char;
  P : Array[0..255] of Char;
  N,M : Integer; ch : Char;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 Wrd1:=Edit1.Text;
 Wrd2:=Edit2.Text;
  n:=Length(Wrd1);
    m:=Length(Wrd2);
 
  for j:=0 to n-1 do S[j]:=Wrd1[j+1];
    for j:=0 to m-1 do P[j]:=Wrd2[j+1];
  for ch:='a' to 'z' do d[ch]:=m;
    for j:=0 to m-2 do d[P[j]]:=m-j-1;
    i:=m;
    i0:=0;
    Repeat
        While i0<i do
        begin
            i0:=i0+1
        end;
        j:=m;
        k:=i;
        Repeat
            k:=k-1;
            j:=j-1
        until (j<=0) OR (P[j]<>S[k]);
        i:=i+d[S[i-1]]
    until ((j<=0) OR (i>N)) AND ((i>n) OR (P[j]=S[k]));
    If (j=0) AND (S[k]=P[j]) then
  Panel1.Caption:='Подслово найдено' 
else 
Panel1.Caption:='Подслово не найдено';
end;
 
end.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  S : String;
  P : String;
  FLINK : Array[1..255] of Byte;
  i,j,n,m: Byte;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  P:=Edit1.Text;
    S:=Edit2.Text;
    n:=Length(S);
    m:=Length(P);
    FLINK[1]:=0;
    i:=2;
      While i<=m do
        begin
          j:=FLINK[i-1];
           While (j<>0) AND (P[j]<>P[i-1]) do j:=FLINK[j];
           FLINK[i]:=j+1;
           i:=i+1
         end;
    i:=1;
    j:=1;
    While i<=n do
    begin
        While (j<>0) AND (P[j]<>S[i]) do j:=FLINK[j];
        If j=m then
        begin
      ShowMessage('Слово встретилось');
      Halt
        end
        else
        begin
            i:=i+1;
            j:=j+1
        end
    end;
    ShowMessage('Слово не встретилось');
      Halt
end;
 
end.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  S : String; { Исходное слово }
  X : String; { Подслово слова S }
  Result: Boolean; { Результат поиска }
  Place : Byte; { Место первого вхождения }
  Res: Boolean; i : Byte;
 
 
implementation
 
{$R *.dfm}
 FUNCTION Poisk (S: String; X: String; var Place: Byte): Boolean;
begin
  Res:=false;
    i:=1;
    While (i<=Length(S)-Length(X)+1) AND NOT Res do
    If Copy(S,i,Length(X))=X then
    begin
        Res:=true;
        Place:=i
    end
    else i:=i+1;
    Poisk:=Res
  END;
procedure TForm1.Button1Click(Sender: TObject);
BEGIN
    S:=Edit1.Text;
    X:=Edit2.Text;
    If X='' then ShowMessage('Результат поиска не определен.') else
    begin
        Result:=Poisk (S,X,Place);
        ShowMessage('Результат поиска '+BoolToStr(Result));
        If Result then ShowMessage('Место первого вхождения: '+inttostr(Place))
    end
end;
 
end.

Для общей информации это реализация алгоритмов: рябина, бойера-мура, кнута-морриса-пратта и последовательного поиска.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.05.2012, 23:18
Ответы с готовыми решениями:

Помогите перевести код с Delphi на C++ Builder, пожалуйста!
unit MainUnit; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,...

Есть программа на Паскале. Помогите, пожалуйста, перевести ее в Delphi
Есть программа на Паскале. Помогите, пожалуйста, перевести ее в Delphi. Program Bls_dsp; Uses TPString, { TPCmd,} ...

Помогите перевести в C++
Помогите перевести в C++ const sm=; var s:string; i,k:byte; begin read(s); k:=0; for i:=1 to lngth(s) do if s in sm...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.05.2012, 23:18
Помогаю со студенческими работами здесь

Помогите перевести
переводил вот так : m:=(exp(3*(ln(b)))+sqr(a)*x+sqr(sin(x))/2*a*sqr(b)+b*sqr(a)*sqr(x)+a*sqrt(b*x) но все же выдает ошибку помогите...

Помогите перевести с PHP на С++
Есть задание - в большой проге понадобилось переводить из одной системы счисления (СС) в другую, нашел хороший класс, но он на PHP,...

Помогите пожалуйста!!! перевести на Си
Program ciklp_6; uses crt; var i,n,k,s : longint; b : integer; begin

Помогите перевести на ассемблер
program text; uses crt; const n=1; var t: array of string; s,ns: string; d,i,y: integer; begin clrscr;

Помогите перевести с VB.NET на C#
Плохо знаю VB пытаюсь адаптировать для C# код для работы с COM портом под .net 1.1 private Declare Function FormatMessage Lib...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru