0 / 0 / 1
Регистрация: 29.11.2017
Сообщений: 12

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

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

Author24 — интернет-сервис помощи студентам
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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.12.2017, 19:16
Ответы с готовыми решениями:

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

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

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

1
0 / 0 / 1
Регистрация: 29.11.2017
Сообщений: 12
10.12.2017, 19:08  [ТС]
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.12.2017, 19:08
Помогаю со студенческими работами здесь

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

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

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

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

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


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

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

Новые блоги и статьи
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
Lazarus. Таблица с объединением ячеек.
Massaraksh7 21.03.2025
Понадобилась представление на экране таблицы с объединёнными ячейками. И не одной, а штук триста, и все разные. На Delphi я использовал для этих целей TStringGrid, и то, кривовато получалось. А в. . .
Async/await в Swift: Асинхронное программировани­е в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
Колмогоровская сложность: Приёмы упрощения кода
ArchitectMsa 20.03.2025
Наверное, каждый программист хотя бы раз сталкивался с кодом, который напоминает запутанный лабиринт — чем дальше в него погружаешься, тем сложнее найти выход. И когда мы говорим о сложности кода, мы. . .
PostgreSQL в Kubernetes: Подготовка кластера и настройка
Mr. Docker 20.03.2025
Когда доходит до контейнеризации баз данных и особенно таких требовательных к ресурсам системах как PostgreSQL, многие команды до сих пор колеблются, прежде чем перенести их в контейнерную. . .
C++26: Индексирование пакетов и метапрограммиро­вание
bytestream 20.03.2025
Эволюция C++ продолжается стремительными темпами – каждый новый стандарт приносит функциональность, о которой мы мечтали годами. Звучит слишком громко? Если вы когда-либо боролись с вариадическими. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru