Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
19 / 19 / 7
Регистрация: 25.03.2009
Сообщений: 222

Удаление строк с заделкой пустых

13.07.2009, 17:31. Показов 4238. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как удалять из текстового файла строки целиком так, чтобы между строками не
оставались пропуски?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.07.2009, 17:31
Ответы с готовыми решениями:

Удаление из массива пустых строк
Есть некий массив со строками Некоторые строки пустые (Lenght=0) Нужно удалить эти строки Мои наработки возвращают исключение...

Подсчитать количество пустых строк в текстовом файле. Сформировать новый файл, в котором пустых строк нет
Задано произвольный текстовый файл. Подсчитать количество пустых строк в этом файле. Сформировать новый файл, в котором пустые строки...

Удаление пустых строк
У меня есть файл со содержимым - d:-!-:dw r:-!-:Distemi:-!-: r:-!-:Distemi:-!-: r:-!-:Distemi:-!-: и мне надо удалить...

33
Почетный модератор
 Аватар для Puporev
64320 / 47616 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
13.07.2009, 21:13
Студворк — интернет-сервис помощи студентам
Pascal
1
2
for i := 1 to 28 do
if pos(a[i], S) = 0 then  WriteLn(f2, S);
1
19 / 19 / 7
Регистрация: 25.03.2009
Сообщений: 222
14.07.2009, 07:46  [ТС]
Сожалею,

if pos(a[i], S) = 0 then WriteLn(f2, S);

тоже неверно. Ничего не удаляет, клонирует строки, многократно увеличивает
вес файла. Не заменяет Continue, которая с массивами также не работает.
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
14.07.2009, 08:18
Добавлено через 7 минут 39 секунд
Цитата Сообщение от kayslu Посмотреть сообщение
if pos(a[i], S) = 0 then WriteLn(f2, S);

тоже неверно. Ничего не удаляет, клонирует строки, многократно увеличивает
вес файла. Не заменяет Continue, которая с массивами также не работает.
сдесь понятно в чем проблема, для ее решения можно сделать так
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
 const a : array[1..28] of string = (' 1  1  1  1  1 ', ' 2  2  2  2  2 ',
 ' 3  3  3  3  3 ', ' 4  4  4  4  4 ', ' 5  5  5  5  5 ', ' 6  6  6  6  6 ',
 ' 7  7  7  7  7 ',
 ' 1  1  1  1 ', ' 2  2  2  2 ', ' 3  3  3  3 ', ' 4  4  4  4 ', ' 5  5  5  5 ',
 ' 6  6  6  6 ', ' 7  7  7  7 ', ' 8  8  8  8 ', ' 9  9  9  9 ',
 ' 1  1  1 ', ' 2  2  2 ', ' 3  3  3 ', ' 4  4  4 ', ' 5  5  5 ', ' 6  6  6 ',
 ' 7  7  7 ', ' 8  8  8 ', ' 9  9  9 ', ' 10 10 10 ', ' 11 11 11 ', ' 12 12 12 ');
                                                       {ucKoMbIe nogcTpoKu}
  var
    f1, f2 : text;
    S : string;
    i : byte;
    flag:boolean;
  begin
    Assign(f1, '62s.txt'); Reset(f1);
    Assign(f2, 'br.txt'); ReWrite(f2);
    while not Eof(f1) do
     begin
      ReadLn(f1, S);
      l:=false;
       for i := 1 to 28 do
       if pos(a[i], S)>0 then l:=true
       if l=false then WriteLn(f2, S);
     end;
    Close(f1); Close(f2)
  end.

но вместо функции for я тебе посоветовал бы использовать repeat потому как только в строке нашлась искомая подстроку то не имеет смысла искать остальные подстроки в этой строке , то есть можно сделать вот так

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
 const a : array[1..28] of string = (' 1  1  1  1  1 ', ' 2  2  2  2  2 ',
 ' 3  3  3  3  3 ', ' 4  4  4  4  4 ', ' 5  5  5  5  5 ', ' 6  6  6  6  6 ',
 ' 7  7  7  7  7 ',
 ' 1  1  1  1 ', ' 2  2  2  2 ', ' 3  3  3  3 ', ' 4  4  4  4 ', ' 5  5  5  5 ',
 ' 6  6  6  6 ', ' 7  7  7  7 ', ' 8  8  8  8 ', ' 9  9  9  9 ',
 ' 1  1  1 ', ' 2  2  2 ', ' 3  3  3 ', ' 4  4  4 ', ' 5  5  5 ', ' 6  6  6 ',
 ' 7  7  7 ', ' 8  8  8 ', ' 9  9  9 ', ' 10 10 10 ', ' 11 11 11 ', ' 12 12 12 ');
                                                       {ucKoMbIe nogcTpoKu}
  var
    f1, f2 : text;
    S : string;
    i : byte;
    flag:boolean;
  begin
    Assign(f1, '62s.txt'); Reset(f1);
    Assign(f2, 'br.txt'); ReWrite(f2);
    while not Eof(f1) do
     begin
      ReadLn(f1, S);
      l:=false;
       i:=0;
        repeat
          i:=i+1;        
         if pos(a[i], S)>0 then l:=true
       until(l)or(i>=28);
       if l=false then WriteLn(f2, S);
     end;
    Close(f1); Close(f2)
  end.
1
Почетный модератор
 Аватар для Puporev
64320 / 47616 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
14.07.2009, 08:26
Да так будет верно.
Но я все равно не понимаю как у вас это будет работать. Зачем в константе подстроки из 3х, 4х,5и единиц? Если в строке будет 3 или больше единиц, то эту строку все равно удалит. Зачем между числами то один пробел, то 2. Пробелы в начале и в конце? Что за файл такой сложный?

end;
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
14.07.2009, 08:30
Цитата Сообщение от Puporev Посмотреть сообщение
Но я все равно не понимаю как у вас это будет работать. Зачем в константе подстроки из 3х, 4х,5и единиц? Если в строке будет 3 или больше единиц, то эту строку все равно удалит. Зачем между числами то один пробел, то 2. Пробелы в начале и в конце? Что за файл такой сложный?
да мне тоже стало интересно зачем такие сложности, но кто знает может там как то хитро создан фаил, или что то в этом роде
0
Почетный модератор
 Аватар для Puporev
64320 / 47616 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
14.07.2009, 08:35
Я вот для пробы так написал. В файле строки из чисел разделенных одним пробелом.
Программа удаляет те строки в которых есть заданные подстроки.
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
uses crt;
 const a : array[1..3] of string =
 ('1 1 1', '2 2 2', '3 3 3 3 3');{ucKoMbIe nogcTpoKu}
  var
    f1, f2 : text;
    S : string;
    i,k : byte;
  begin
    clrscr;
    Assign(f1, 'file1.txt'); Reset(f1);
    Assign(f2, 'file2.txt'); ReWrite(f2);
    while not Eof(f1) do
     begin
      ReadLn(f1, S);
       k:=0;
       for i := 1 to 3 do
       if pos(a[i], S)> 0 then
       k:=1;
       if k=0 then WriteLn(f2, S);
      end;
    Close(f1); Close(f2);
    write('Fail pereisan!');
    readln
  end.
1
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
14.07.2009, 08:38
да ладно не будем ему мешать , он написал как ему надо было
0
Почетный модератор
 Аватар для Puporev
64320 / 47616 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
14.07.2009, 08:43
Так его просят второй день раскрыть тайну его программы, а он все спрашивает, а суть задачи не поясняет.Как можно вслепую что-то объяснить. Вот посмотри всю тему.
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
14.07.2009, 08:51
да я ее всю просмотрел, просто мы же помогли там где ему надо было , а что и для чего эта программа так мне все равно
0
19 / 19 / 7
Регистрация: 25.03.2009
Сообщений: 222
14.07.2009, 09:52  [ТС]
Уважаемый mamedovvms. Ваша программа хорошо работает, большое
спасибо за помощь. Также очень помог Puporev, тоже большое спасибо.
Последняя его идея со счетчиком меня заинтересовала, буду пробовать. А
вот высказываясь о пробелах он маху даёт. Я их перепробовал.
Ответы на вопросы. Массивы подстрок нужны разные и всегда под рукой в
разных наборах. Сами файлы большие, здесь, наверное, и не пролезут. Программа
нужна чтобы дать структурное описание классов подмножеств множества чисел
данного файла.
Всем большое спасибо.
Тему можно считать в общем исчерпанной.
0
Почетный модератор
 Аватар для Puporev
64320 / 47616 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
14.07.2009, 10:11
А вот высказываясь о пробелах он маху даёт. Я их перепробовал.
Я понятия не имею как организован Ваш файл, и для пробы написал для обычных текстовых файлов чисел, где числа обычно пишут через один пробел.
Вы в принципе могли бы в самом начале показать 5-6 строк файла и пояснить, что с ним нужно сделать, а Ваш вопрос
Как удалять из текстового файла строки целиком так, чтобы между строками не оставались пропуски?
ничего кроме улыбки вызвать не мог. Учитесь правильно ставить задачу и правильно ее формулировать. Если Вас не могут понять люди, то компьютер тем более Вас не поймет.
0
 Аватар для lexus_ilia
3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
14.07.2009, 14:13
А я Вот сожалею что тема исчерпана, может всё-таки кто-нибудь пояснить нормально задание ? Кроме такого, что удалять строки где находится какая-нибудь константа...
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
14.07.2009, 14:18
я что то не пойму о чем все еще можно спорить, задание на мой взгляд понятное, как удалить из файла строку, но так что бы на ее месте не было пустой строки, в чем проблема, и задание было не больше ни меньше
0
Почетный модератор
 Аватар для Puporev
64320 / 47616 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
14.07.2009, 14:18
Ты это читал, Илья?
Задания у меня нет, я не студент, значит, с формулировкой проблемы. Просто у меня куча таблиц, которые я получил при помощи "глупостей". Таблицы я получил, но в них зияют дыры, которые надо закрыть сомкнув строки.
Товарищ пишет секретную программу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.07.2009, 14:18

Удаление пустых строк; Java IO
Нам нужно при копировании информации из одной строки в другую исключить пустые строки. Например: Мне мира нет и брани не подъемлю, ...

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

Удаление пустых строк из массива
TCHAR display; //создаем массив SendMessage(Handle, WM_GETTEXT, 32768, (LPARAM)display); //заносим в массив содержимое окна ...

Удаление пустых строк в диапазоне
Ребят, у меня опять проблемы по невнимательности. Написал тут Private Sub CommandButton1_Click() Dim ra As Range, delra As Range ...

Удаление пустых строк в ListBox
Private Sub ListBox1_Enter() For k = 2 To 50 If Cells(i + 1, 1).Value <> " " Then ListBox1.AddItem Cells(i + k, 1).Value End If ...


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

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru