IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Длинные строки в файлах, Помогите,пожалуйста!
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 30
Пол: Мужской

Репутация: -  0  +


Не понимаю, как осуществить ету самую длинную строку....

В текстовый файл занесена строка длиной более 255 символов (в строке мо-жет быть только одно слово). Вывести на экран строку, удалив повторяющие «лишние» пробелы (если они есть), и удалить все последующие вхождения первой буквы в каждом слове.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Ну вот посмотри, тут не вся программа, процедура формирует файл из одной очень длинной строки (можно можно сформировать сколько угодно таких строк), далее начинается обработка, читается строка из файла, если её длина > 255, то из нее удаляются пробелмы в начале и в конце.

uses crt;

const
max_str_len = 1000;

function long_read(var f: Text): PChar;
var
P: PChar;
i: Word;
ch: Char;
begin
P := nil;
if not(eof(f)) then begin
i := 0;
GetMem(P, max_str_len * sizeof(char));
while not(eoln(f)) do begin
read(f, ch);
P[i] := ch;
inc(i);
end;
readln(f);
end;
if P <> nil then long_read := P else long_read := '';
end;

function long_del_space(P: PChar): PChar;
var
i, j, back: Word;
temp: PChar;
begin
i := 0;
while (i < Length(P)) and (P[i] = ' ') do inc(i);
if (i < Length(P)) then begin
back := i;
while (i < Length(P)) and (P[i] <> ' ') do inc(i);
GetMem(temp, (i - back) * sizeof(Char));
for j := back to i - 1 do temp[j - back] := P[j];
long_del_space := temp;
end else long_del_space := '';
end;

procedure CreateTestFile(var f: Text);
var
i: Integer;
begin
rewrite(f);
for i := 1 to 50 do write(f, ' '); // 50 пробелов
for i := 100 to 200 do write(f, i); // числа от 100 до 200 (100101102...199200)
for i := 97 to 122 do write(f, char(i)); // алфавит
for i := 1 to 20 do write(f, ' '); // 20 пробелов
writeln(f);
end;

var
f: Text;
P: PChar;

begin
clrscr;
assign(f, 'text.txt');
CreateTestFile(f);

reset(f);
while not(eof(f)) do begin
P := long_read(f);
write('->', P, '<-');
writeln; writeln;
if Length(P) > 255 then P := long_del_space(P);
write('->', P, '<-');
writeln; writeln;
end;

close(f);
readln;
end.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 6.05.2024 14:16
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name