Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 1
Регистрация: 29.11.2017
Сообщений: 12
1

Имеется программа, слова для замены берутся из файла, что изменить чтобы для замены писать свое предложение в консоли

08.12.2017, 19:16. Просмотров 647. Ответов 1
Метки нет (Все метки)


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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
program Project3_ready;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils,
  Windows;
 
const
  
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
 
  M = 1;
  cFn1 = 'file1.txt'; 
  cFn2 = 'file2.txt'; 
var
  F1, F2 : Text;
  S, Sw, Fn1, Fn2 : String;
  Arr1, Arr2 : array[1..M] of String;
  i, j, Len, LenW, Cnt : Integer;
begin
 
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
 
  Fn1 := ExtractFilePath(ParamStr(0)) + cFn1;
  Fn2 := ExtractFilePath(ParamStr(0)) + cFn2;
 
  repeat
    Writeln('Файл с исходным текстомì: ', Fn1);
    Writeln;
    Writeln('Задайте слова, которые нужно заменить');
    i := 0;
    repeat
      Write('Ñëîâî ', i + 1, ': ');
      Readln(S);
      if S <> '' then begin
        Inc(i);
        Arr1[i] := S;
      end;
    until (S = '') or (i = M);
    Cnt := i;
 
    Writeln('Задайте слова на которые нужно заменить.');
    i := 0;
    repeat
      Write('Ñëîâî ', i + 1, ': ');
      Readln(S);
      if S <> '' then begin
        Inc(i);
        Arr2[i] := S;
      end;
    until (S = '') or (i = M);
 
    if i < Cnt then Cnt := i;
    Writeln('Количество пар для замены: ', Cnt);
    if Cnt = 0 then begin
      Writeln('Пары не заданы. Действие отменено.');
      Readln(S);
      Continue;
    end;
 
    AssignFile(F1, Fn1);
    AssignFile(F2, Fn2);
    Reset(F1);
    Rewrite(F2);
    while not Eof(F1) do begin
      Readln(F1, S); 
      Len := Length(S);
      LenW := 0; 
      
      for i := Len downto 1 do
        if not (S[i] in D) then begin 
          Inc(LenW); 
          if (i = 1) or (S[i - 1] in D) then begin 
            Sw := Copy(S, i, LenW); 
           
            j := 1;
            while (j <= Cnt) and (Sw <> Arr1[j]) do Inc(j);
            if j <= Cnt then begin
              Delete(S, i, LenW); 
              Insert(Arr2[j], S, i); 
            end;
            LenW := 0;
          end;
        end;
      Writeln(F2, S);
    end;
    CloseFile(F1);
    CloseFile(F2);
 
    Writeln('Текст обработан. Результат записан в файл: ', Fn2);
    Writeln;
    Readln(S);
  until S <> '';
end.
Добавлено через 21 час 52 минуты
Смысл в том, что программа заменяет слова в предложении в файле, а нужно изменить её так, чтобы предложение в котором нужно будет заменить слова писалось в консольном режиме. Заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.12.2017, 19:16
Ответы с готовыми решениями:

Возможно ли, чтобы предложение для замены слова писалось перед словами для замены
Возможно ли, чтобы предложение для замены слова писалось перед словами для замены?program Project1;...

Как писать триггеры для обработки вставки, замены, удаления записи из таблиц?
Как написать триггеры для обработки вставки, замены, удаления записи из таблиц?объясните...

Подгрузка файла для получения списка слов для замены
На странице есть определенное количество полей с одинаковым текстом, нужно заменить этот текст на...

Программа для замены символов
program n01; uses crt; var a:array of char; b:array of char; f1:text;i:integer; ...

__________________
Помогаю в написании студенческих работ здесь.
1
0 / 0 / 1
Регистрация: 29.11.2017
Сообщений: 12
10.12.2017, 19:08  [ТС] 2
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
program Project1;
 
const
{Множество разделителей.}
D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
{Наибольшее количество слов для замены.}
M = 1;
Fn1 = 'file1.txt'; {Имя файла с исходным текстом.}
Fn2 = 'file2.txt'; {Имя файла с обработанным текстом.}
var
F1, F2 : Text;
S, Sw : String;
Arr1, Arr2 : array[1..M] of String;
i, j, Len, LenW, Cnt : Integer;
begin
repeat
Writeln('Файл с исходным текстом: ', Fn1);
Writeln;
Writeln('Задайте слова, которые надо заменить. Ввод каждого слова завершайте');
Writeln('нажатием клавиши Enter. Прекратить ввод - пустая строка + Enter.');
i := 0;
repeat
Write('Слово ', i + 1, ': ');
Readln(S);
if S <> '' then begin
Inc(i);
Arr1[i] := S;
end;
until (S = '') or (i = M);
Cnt := i;
 
Writeln('Задайте слова, на которые надо заменить. Правила ввода такие же.');
i := 0;
repeat
Write('Слово ', i + 1, ': ');
Readln(S);
if S <> '' then begin
Inc(i);
Arr2[i] := S;
end;
until (S = '') or (i = M);
 
if i < Cnt then Cnt := i;
Writeln('Количество пар для замены: ', Cnt);
if Cnt = 0 then begin
Writeln('Пары не заданы. Действие отменено.');
Writeln('Повторить - Enter. Выход - любой символ + Enter.');
Readln(S);
Continue;
end;
 
Assign(F1, Fn1);
Assign(F2, Fn2);
Reset(F1);
Rewrite(F2);
while not Eof(F1) do begin
Readln(F1, S); {Читаем строку из входного файла.}
Len := Length(S);
LenW := 0; {Длина очередного выделенного из строки слова.}
{Перебор символов строки справа - налево.}
for i := Len downto 1 do
if not (S[i] in D) then begin {Если текущий символ не является разделителем.}
Inc(LenW); {Учитываем текущий символ в длине слова.}
if (i = 1) or (S[i - 1] in D) then begin {Отслеживаем начало слова.}
Sw := Copy(S, i, LenW); {Выделяем очередное слово.}
{Определяем индекс заменяемого слова.}
j := 1;
while (j <= Cnt) and (Sw <> Arr1[j]) do Inc(j);
{Если индекс найден, т. е., если слово является заменяемым, то выполняем
замену. - Прежнее слово удаляем и вставляем на его место новое.}
if j <= Cnt then begin
Delete(S, i, LenW); {Удаляем слово.}
Insert(Arr2[j], S, i); {Вставляем замену.}
end;
LenW := 0;
end;
end;
Writeln(F2, S); {Записываем обработанную строку в выходной файл.}
end;
{Закрываем файлы.}
Close(F1);
Close(F2);
 
Writeln('Текст обработан. Результат записан в файл: ', Fn2);
Writeln;
 
Writeln('Повторить - Enter. Выход - любой символ + Enter.');
Readln(S);
until S <> '';
end.
Вот пояснения. Не знаю что поставить вместо while not Eof(F1) do begin

Добавлено через 47 минут
Помогите. Позязя
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.12.2017, 19:08

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Программа по тестированию для замены слов
Доброго времение суток. Я далек от программирования, но недавно начал изучать финский язык и...

Программа для замены текста во многих файлах
Здравствуйте! Подскажите бесплатную программу для одновременной замены текста во многих файлах,...

Программа для замены строчных на заглавных и наоборот
Нашел код который из строчных делает заглавные. Можно ли доделать код что бы он одновременно...

Программа для шифрования и дешифрования путем замены символов
Доброго времени суток, хочу попросить помочь написать код для программы. Суть программы в том,...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.