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

Работа с текстовыми файлами, настройка длины строк

11.12.2014, 23:15. Показов 655. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят, мучаюсь с задачей уже 6 дней, хочу спать Не отказался бы от готового кода Но прошу хотя бы совета, вообще не получается. Возможно задание коряво изложено, так что если что - уточняйте(оригинал не на русском)

В текстовом документе in.txt есть текст со строками до 100 символов. Между словами 1 или больше пробелов, в начале и в конце строки пробелы могут быть, а могу и не быть. Могут быть также пустые строки и строки только из пробелов. Надо написать программу которая сделает так, что б длина строк была не больше N(вводится вручную, меньше 100). Если слово не помещается - ряд становится короче, а слово перескакивает на следующий ряд. Во втором файле(куда выводится ответ, создаётся программно) нужно записать то, что получится, НО! избавиться от всех "лишних" пробелов между словами и от всех пробелов в начале/конце строк.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.12.2014, 23:15
Ответы с готовыми решениями:

Работа с текстовыми файлами. Вывести количество строк, состоящих из одинаковых букв
Имеем текстовый файл, содержащий более одной строки. Вывести количество строк, состоящих из одинаковых букв.

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

Работа с текстовыми файлами
Дан файл, содержащий некоторый текст. Удалить из этого файла фразы, содержащие слова с двумя буквами «О». Несколько программ нашёл...

6
Модератор
10448 / 5739 / 3407
Регистрация: 17.08.2012
Сообщений: 17,459
12.12.2014, 07:01
Допустим, N = 55. Текст
Code
1
2
Есть какая-то строка, будем мы её пилить на несколько частей.
Ещё строка.
Как должен быть преобразован, так (1):
Code
1
2
3
Есть какая-то строка, будем мы её пилить на несколько
частей.
Ещё строка.
Или так (2):
Code
1
2
Есть какая-то строка, будем мы её пилить на несколько
частей. Ещё строка.
0
4 / 4 / 1
Регистрация: 11.12.2014
Сообщений: 26
12.12.2014, 10:58  [ТС]
Второй вариант
0
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
12.12.2014, 11:14
DigitalGod,
что делать, если задача НЕ ИМЕЕТ решения (N задано меньше, чем длина какого-то слова?)
Что делать с пустыми строками?
Какой у Вас Паскаль?
0
4 / 4 / 1
Регистрация: 11.12.2014
Сообщений: 26
12.12.2014, 11:27  [ТС]
Пустые строки удалять, задача всегда имеет (пользователь не имеет права задать неправильно), борланд паскаль
0
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
12.12.2014, 11:39
DigitalGod, в качесте заготовки для дальнейшей доработки:
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
function RemoveSpaceFromString(const s : string): string;
var res : string;
  i : integer;
begin
  res := '';
  i := 1;
  while (i<=Length(s)) and (s[i]=' ') do Inc(i);
 
  if i<=Length(s) then res := res + s[i];
 
  for i:=i+1 to Length(s) do
     if (s[i]<>' ') or
          ((s[i]=' ') and (s[i-1]<>' ')) then res := res + s[i];
 
  {удалим пробелы в конце строки res}
  i:= Length(res);
  while (i>0) and (res[i]=' ') do Dec(i);
 
  RemoveSpaceFromString := Copy(res,1, i);
end;
 
var 
  t, fr : text;
  s, spred : string;
  i,N : integer;
begin
  Assign(t, 't2.txt');
  Reset(t);
  Assign(fr, 't2frmt.txt');
  Rewrite(fr);
 
  WriteLn;
  repeat
    Write('Vvedite N:');
    Readln(N);
  until (n>2) and (n<100);
 
  spred := '';
  while not eof(t) do begin
    Readln(t, s);
    s := RemoveSpaceFromString(s);
    if sPred<>'' then s := spred+ ' ' + s;
              ;
    sPred := '';
    if Length(s)>N then begin
      i := N;
      while (i>0) and (s[i]<>' ') do Dec(i);
      if i=0 then begin
                    WriteLn('No solution! Stope!!');
                    Close(t);  Close(fr);
                    Halt(1)
                  end;
      sPred := Copy(s, i+1, Length(s)-i-1);
      s := Copy(s,1, i);
      { WriteLn('>',s,'<', '   sped = >',sPred,'<'); }
    end;
    if s<>'' then 
       WriteLn(fr,s);
  end;
  if sPred<>'' then WriteLn(fr, sPred);
  Close(t);
  Close(fr);
  WriteLn('Done!');
  Readln
end.
0
Модератор
10448 / 5739 / 3407
Регистрация: 17.08.2012
Сообщений: 17,459
16.12.2014, 00:54
Мой вариант, для любого паскаля.
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
var fi, fo: text;
    n: integer;
    buf, wrd, s: string;
    err: boolean;
begin
  assign(fi, 'c:\in.txt'); reset(fi);
  assign(fo, 'c:\out.txt'); rewrite(fo);
  repeat
    write('Length = '); readln(n);
    if (n < 1) or (n > 254) then writeln('Диапазон длины строки: 1..254 символов.')
  until (n >= 1) and (n <= 254);
  err := false;
  buf := '';
  while not eof(fi) do
    begin
      readln(fi, s);
      s := s + ' ';
      while length(s) > 0 do
        begin
          wrd := copy(s, 1, pos(' ', s));
          delete(s, 1, pos(' ', s));
          while (length(wrd) > 0) and (wrd[1] = ' ') do delete(wrd, 1, 1);
          if length(wrd) = 0 then continue;
          if length(wrd) >= n
            then begin
              if length(buf) > 0 then writeln(fo, copy(wrd, 1, length(wrd) - 1));
              writeln(fo, copy(wrd, 1, length(wrd) - 1));
              err := true
            end
            else if length(buf) + length(wrd) < n + 1
              then buf := buf + wrd
              else begin
                writeln(fo, copy(buf, 1, length(buf) - 1));
                buf := wrd
              end
        end
    end;
  if length(buf) > 0 then writeln(fo, copy(buf, 1, length(buf) - 1));
  close(fo);
  close(fi);
  if err then writeln('Внимание! Выходной файл содержит слова диной более ', n - 1, ' символов.');
  write('Завершено. Нажмите клавишу <Enter>.');
  readln
end.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.12.2014, 00:54
Помогаю со студенческими работами здесь

Работа с текстовыми файлами
Дан текстовый файл F. Добавить в его конец символы E,N,D (если необходимо, использовать файл Q). Выручите - очень надо1!

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

Работа с текстовыми файлами
Подскажите вот есть файл (txt) в нем информация такого типа: имя возраст дата в примерах нашел: можно ли занести имя...

Работа с текстовыми файлами
Добрый вечер, слёзно прошу помощи... объясните, как считать данные из текстового файла таким образом: Допустим, есть некий...

Работа с текстовыми файлами
Всем доброго дня! Нужна помощь в решении следующей работы: Нужно создать файл, содержащий текст, набранный заглавными английскими...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru