Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 16.08.2009
Сообщений: 4

Составить библиотеку алгоритмов редактирования текстового документа

16.08.2009, 11:25. Показов 1756. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожауйста написать программу!!
Составить библиотеку алгоритмов редактирования текстового документа:
-раздвинуть строку равномерно на к позиций
-сжать строку равномерно на к позиций
-удалить строку по ее номеру.
Заранее спасибо!!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.08.2009, 11:25
Ответы с готовыми решениями:

Составить библиотеку алгоритмов для преобразования произвольных числовых матриц
const n=3;m=3; type mas=arrayof real; procedure VvodMatrix(var a:mas); var i,j:byte; Begin for i:=1 to n do begin ...

Как составить условие проверки текстового документа
Здравствуйте, подскажите как реализовать мою задачу У меня есть текстовый документ, в нём записаны числа от 1 до 224 Программа при...

Запрет редактирования документа
При просмотре документов во View их можно открыть на редактирование двойным кликом или нажатием ENTER. Можно ли это запретить конкретной...

4
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
16.08.2009, 11:42
1. В каком Паскале пишете? Библиотека имеется ввиду DLL, или это Вы модуль так называете?
2 и 3. Как происходит удлинение и сжатие строки, за счет чего?
Как быть в случаях когда k+length(s)>255 и length(s)-k<0
0
0 / 0 / 0
Регистрация: 16.08.2009
Сообщений: 4
16.08.2009, 14:46  [ТС]
Borland Pasca.Да, это модульное программирование. удлинение проиходит за счет вставки пробелом между словами,причем равномерно. сжатие за счет удаление пробелов.
0
Босс
 Аватар для sheka
161 / 126 / 10
Регистрация: 03.06.2009
Сообщений: 750
16.08.2009, 16:00
Сначала посчитайте количество пробелов в строке kol_probelov
потом, то количество пробелов которое нужно вставить между любыми 2 словами k_int=k div kol_probelov;
и потом вставлять между любыми 2 словами сначала по k_int+1 (k mod kol_probelov раз) пробелов, а потом по k_int пробелов.
1
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
17.08.2009, 09:48
Во вложении программа, текст модуля, откомпилированный модуль и комментарии.
Текст модуля.
Pascal
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
unit RedText;{название модуля, сохранить файл под этим именем}
interface
uses crt;
procedure Open(var f,g:text);{открытие файлов для чтения и записи}
procedure Extend(var f,g:text;k:byte);{процедура расширения строк в файле}
procedure Compress(var f,g:text;k:byte);{процедура сжатия строк в файле}
procedure DelStr(var f,g:text;n:integer);{процедура удаления строки по номеру}
 
implementation
 
procedure Open(var f,g:text);
var  namef,nameg:string;
begin
write('Введите имя файла для изменений:  ');
readln(namef);
namef:=namef+'.txt';
assign(f,namef);
{$I-}
reset(f);
{$I+}
if IOResult<>0 then
 begin
  writeln('Файл с именем ',namef,' не найден.');
  writeln('Работа программы завершена. Нажмите Enter.');
  readln;
  halt;
 end;
write('Введите имя файла для записи:  ');
readln(nameg);
nameg:=nameg+'.txt';
assign(g,nameg);
rewrite(g);
end;
 
procedure Extend(var f,g:text;k:byte);
var s:string;
    k1,p,v,v1,v2,j:byte;
    i:integer;
begin
repeat
write('Раздвинуть строку на К позиций k=');
readln(k);
until k in [0..255];{проверяем правильность ввода числа, не более 255}
while not eof(f) do{пока не конец файла}
 begin
  readln(f,s);{читаем строки}
  if k+length(s)>255 then k1:=255-length(s){если в результате строка превысит 255 символов, ограничиваем К}
  else k1:=k;{если нормально, нет}
  v:=0;{количество вставок пробелов}
  repeat{повторяем пока не вставим нужное количество пробелов}
    for i:=length(s) downto 1 do{идем с конца строки}
    if (s[i]=' ')and(s[i-1]<>' ') then{если пробел, а перед ним не пробел}
     begin
      insert(' ',s,i);{вставляем пробел}
      v:=v+1;{считаем}
      if v=k1 then break;{если вставили достаточно, прерываем цикл}
     end;
  until v=k1;
  writeln(g,s);{записываем измененную строку в новый файл}
 end;
write('Файл переписан!');
close(f);{закрываем файлы}
close(g);
readln;
clrscr;{очищаем экран от ввода}
end;
 
procedure Compress(var f,g:text;k:byte);
var s:string;
    k1,p,u,u1,u2,j:byte;
    i:integer;
begin
repeat
write('Сжать строку на К позиций k=');
readln(k);
until k in [0..255];
while not eof(f) do
 begin
  readln(f,s);
  if k>length(s) then k1:=length(s){если К больше длины строки, ограничиваем}
  else k1:=k;
  p:=0;{количество пробелов, которые можно удалить( два рядом)}
  for i:=1 to length(s)do
  if (s[i]=' ')and(s[i-1]=' ')then p:=p+1;{считаем по всей строке}
  u:=0;{количество удалений пробелов}
  repeat{повторояем пока не удалим нужное количество пробелов, или пока есть что удалять}
    for i:=length(s) downto 1 do{идем с конца строки}
    if (s[i]=' ')and(s[i+1]=' ')and(s[i-1]<>' ') then{если пробел и после него пробел, а перед ним не пробел}
     begin
      delete(s,i,1);{удаляем пробел}
      u:=u+1;{считаем}
      if (u=k1)or(u=p) then break;{если удалили К пробелов, или нет пробелов для удаления, прерываем цикл}
     end;
  until (u=k1)or(u=p);
  writeln(g,s);{записываем измененную строку в новый файл}
 end;
write('Файл переписан!');
close(f);
close(g);
readln;
clrscr;
end;
 
procedure DelStr(var f,g:text;n:integer);
var i:integer;
    s:string;
begin
write('Введите номер строки для удаления: ');
readln(n);
i:=0;
while not eof(f) do
 begin
  readln(f,s);{читаем строки}
  i:=i+1;{считаем}
  if i<>n then writeln(g,s);{если номер строки=заданному, эту строку в новый файл не пишем}
 end;
if i<n then writeln('В исходном файле нет ',n,' строк!')
else writeln('Файл переписан!');
close(f);
close(g);
readln;
clrscr;
end;
end.
Текст программы.
Pascal
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
uses Crt,RedText;{подключаем наш модуль}
var f1,f2:text;{текстовые файлы}
    n1,n2:string;{имена файлов}
    kp,w:byte;{количество вставок(удалений)}
    ns:integer;{номер удаляемой строки}
begin
clrscr;
while w<5 do{меню выбора действия, появляется пока не выберем выход}
 begin
  writeln('    Выберите действие:');
  writeln('1-раздвинуть строки в файле');
  writeln('2-cжать строки в файле');
  writeln('3-удалить строку в файле по ее номеру');
  writeln('4-выход');
  repeat
   readln(w);
  until w in [1..4];
  case w of
  1:begin
    Open(f1,f2);
    Extend(f1,f2,kp);
    end;
  2:begin
    Open(f1,f2);
    Compress(f1,f2,kp);
    end;
  3:begin
    Open(f1,f2);
    DelStr(f1,f2,ns);
    end;
  4:exit;
  end;
 end;
readln
end.
Вложения
Тип файла: rar Редактирование текста.rar (8.0 Кб, 39 просмотров)
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.08.2009, 09:48
Помогаю со студенческими работами здесь

Запрет редактирования документа по условию
(8.3.УП.) Добрый день. Имеется документ, в котором есть реквизит: статус, с предопределенными данными: в работе, диагностика и...

Программа редактирования XML документа
Всем добрый вечер. Имеется задача, написать XML парсер следующего типа. Пока нет конца документа выполнять: найти значение x, сравнить x и...

Программа редактирования XML - документа
Необходимо написать программу на delphi, позволяющую редактировать дерево xml-документа Буду очень благодарна за вашу помощь!

Ограничение редактирования документа Word по времени
Добрый день! Можно ли в word'овском документе ввести временное ограничение на редактирование? Пример: Для заполнения документа...

Контроль редактирования документа другим пользователем
На одном сервере, если документ кто-то открыл на редактирование - другому пользователю клиент ругается. Можно ли как-то программно...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru