С Новым годом! Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
 Аватар для Svager
399 / 378 / 408
Регистрация: 14.09.2013
Сообщений: 1,204

Переписать все компоненты файла f в файл g, в обратном порядке

25.03.2014, 23:45. Показов 3736. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача стоит так..нужно создать символьный файл f переписать все компоненты файла f в файл g,в обратном порядке , заменяя пары одинаковых символов на символ 0...не получается напсиать саму замену . помогите если есть желание.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.03.2014, 23:45
Ответы с готовыми решениями:

Переписать в файл G в обратном порядке все нечетные компоненты файла F
Создать файл F, содержащий целые числа. Переписать в файл G в обратном порядке все нечетные компоненты файла F

Переписать компоненты файла в обратном порядке
Составьте файл f,компоненты которого являються целыми числами.Напишите программу переписывающую компоненты файла в обратном порядке.(новый...

Файл: Записать в файл h сначала компоненты файла f, затем - компоненты файла g в обратном порядке.
Даны символьные файлы f и g. Составьте программу записывающую в файл h сначала компоненты файла f, затем - компоненты файла g в обратном...

21
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
26.03.2014, 00:03
Цитата Сообщение от Svager Посмотреть сообщение
символьный файл f
Цитата Сообщение от Svager Посмотреть сообщение
компоненты файла f
Расшифруйте, что имеется в виду. Текстовые файлы? file of char? Что имеется в виду под компонентом текстового файла, отдельные символы? Разделители строк являются компонентами?
0
 Аватар для Svager
399 / 378 / 408
Регистрация: 14.09.2013
Сообщений: 1,204
26.03.2014, 00:06  [ТС]
bormant, именно file of char ... любые символы цифры буквы и тд..
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
26.03.2014, 00:09
Цитата Сообщение от Svager Посмотреть сообщение
не получается напсиать саму замену
Pascal
1
2
for i:=Length(s)-1 downto 1 do
  if s[i]=s[i+1] then begin s[i]:='0'; Delete(s,i+1,1) end;
Если же пары нужно считать обязательно от начала исходного файла, то
Pascal
1
2
3
4
5
i:=2; while i<=Length(s) do begin
  if s[i-1]=s[i] then begin
    s[i-1]:='0'; Delete(s,i,1)
  end else inc(i);
end;
0
 Аватар для Svager
399 / 378 / 408
Регистрация: 14.09.2013
Сообщений: 1,204
26.03.2014, 00:13  [ТС]
bormant, это же вы через стринг ?
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
26.03.2014, 00:13
Цитата Сообщение от Svager Посмотреть сообщение
любые символы цифры буквы и тд..
Допустим, исходный файл:
Code
1
2
3
123
456
789
Что должно получиться в результате? Имейте в виду, что этот файл на самом деле вот такая строка:
Pascal
1
'123'#13#10'456'#13#10'789'#13#10
0
 Аватар для Svager
399 / 378 / 408
Регистрация: 14.09.2013
Сообщений: 1,204
26.03.2014, 00:17  [ТС]
bormant, ну вот смотрите допустим мы ввели в файл компоненты..
Pascal
1
aa1gf
и нужно что бы получилось в новом файле вот такое
Pascal
1
   fg10
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
26.03.2014, 00:24
Что должно получиться в моем примере для файла из нескольких строк?
0
 Аватар для Svager
399 / 378 / 408
Регистрация: 14.09.2013
Сообщений: 1,204
26.03.2014, 17:52  [ТС]
bormant, просто получиться зеркально отображение и все..ничего не меняется,так как нету одинаковых символов .

Добавлено через 17 часов 25 минут
я так понял так нельзя сделать,верно?
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
26.03.2014, 18:08
Цитата Сообщение от Svager Посмотреть сообщение
нельзя сделать,верно?
Отчего же нельзя, можно. Например, в первом приближении можно поступить так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var
  f: file of char;
  g: text;
  s: string;
  c: char;
  i: Longint;
begin
  Assign(f, 'in.txt'); Assign(g, 'out.txt');
  Reset(f); Rewrite(g);
  s:='';
  for i:=FileSize(f)-1 downto 0 do begin
    Seek(f, i); Read(f, c);
    case c of
    #13:;
    #10: begin WriteLn(g, s); s:=''; end;
    else if Copy(s, Length(s), 1)=c then s[Length(s)]:='0' else s:=s+c;
    end;
  end;
  Write(g, s);
  Close(f); Close(g);
end.
1
 Аватар для Svager
399 / 378 / 408
Регистрация: 14.09.2013
Сообщений: 1,204
26.03.2014, 18:16  [ТС]
bormant, а если это не текстовый файл , а типизированный ?
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
26.03.2014, 18:19
Цитата Сообщение от Svager Посмотреть сообщение
если это не текстовый файл , а типизированный ?
Тогда всё сильно упрощается. Только это другая задача, которая пока вами не сформулирована.
0
 Аватар для Svager
399 / 378 / 408
Регистрация: 14.09.2013
Сообщений: 1,204
26.03.2014, 20:16  [ТС]
bormant, та как это...хорошо...вот условие полное. Сформировать символьный файл f. Переписать компоненты файла f в новый файл g в обратном порядке, заменяя все пары подряд расположенных одинаковых букв на один символ '0 '

Добавлено через 1 час 49 минут
bormant, а такое нельзя сделать?
0
 Аватар для markiza-inc
924 / 251 / 100
Регистрация: 21.10.2012
Сообщений: 594
26.03.2014, 20:57
Svager, в принципе, bormant Вам уже описал все действия.

Цитата Сообщение от Svager Посмотреть сообщение
символьный файл
Если подходить к Вашей задаче дословно, то:
  1. Файл должен состоять только из символов, т.е. никаких переводов строки (#10) и возвратов каретки (#13) быть не должно
  2. Открыть исходный файл и файл результата как байтовый или char, т.е. длина записи 1 байт
  3. Исходный читать побайтно с конца файла, используя оператор seek
  4. Выводить побайтно в выходной файл
  5. ...
Если в файле есть пробелы, то файл будет выглядеть как текстовый, но весь файл в одну строку.

Если не согласны с чем-либо, то уточняйте условие задачи.
0
 Аватар для Svager
399 / 378 / 408
Регистрация: 14.09.2013
Сообщений: 1,204
26.03.2014, 21:16  [ТС]
markiza-inc, в файле не будет пробелов..просто не получается написать замену одинаковых парных символов..

Добавлено через 7 минут
markiza-inc, и это файл оф чар
0
 Аватар для markiza-inc
924 / 251 / 100
Регистрация: 21.10.2012
Сообщений: 594
27.03.2014, 00:59
Посмотрите такую прогу:
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
Program   Name;
uses      crt;
var
         size        : longint;
         fi,fo       : file of char;
         ch,ch1,nul  : char;
         namei,nameo : string;
BEGIN
    ClrScr;nul:='0';
    namei:='f.txt';nameo:='g.txt';
    {$I-}Assign(Fi, Namei);Reset(Fi);{$I+}
    if  (IOResult = 0) then
     begin
       Assign(Fo, Nameo);Rewrite(Fo);
       size:=filesize(fi)-1;
       while size>0 do
        begin
          dec(size,1);seek(fi,size);read(fi,ch1);read(fi,ch);
          if ch<>ch1 then
             begin
               write(fo,ch);
               if size=0 then write(fo,ch1);
             end
                     else
             begin
               dec(size);write(fo,nul);
             end;
        end;
       close(fi);close(fo);
       write('Файл ',nameo,' создан, нажмите любую клавишу...');
     end
                       else
     begin
       writeln('Исходный файл ',namei,' не найден.');
     end;
   readkey;
END.
Пример исходного файла: f.txt
1
 Аватар для Svager
399 / 378 / 408
Регистрация: 14.09.2013
Сообщений: 1,204
27.03.2014, 21:28  [ТС]
markiza-inc, хорошо...теперь мне интересно зачем делать проверку на ошибку ?
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
28.03.2014, 00:16
markiza-inc,
у меня получилось что-то такое, без парных чтений:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
const
  zero: char = '0';
var
  c, p: char;
  dbl: boolean;
  f, g: file of char;
  i: LongInt;
begin
  Assign(f,'in.bin'); Assign(g,'out.bin');
  Reset(f); Rewrite(g);
  Seek(f,FileSize(f)-1); Read(f,p); dbl:=false;
  for i:=FileSize(f)-2 downto 0 do begin
    Seek(f,i); Read(f,c);
    if dbl then dbl:=false
    else if c<>p then Write(g,p)
    else begin
      Write(g,zero); dbl:=true;
    end; 
    p:=c;
  end;
  if not dbl then Write(g,p);
  Close(f); Close(g);
end.
1
 Аватар для Svager
399 / 378 / 408
Регистрация: 14.09.2013
Сообщений: 1,204
28.03.2014, 01:00  [ТС]
bormant, хоть оно чет вообще не запускается, ошибка проверки границ
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
28.03.2014, 08:51
Лучший ответ Сообщение было отмечено Svager как решение

Решение

Svager,
в каком месте и с каким содержимым файла in.bin?
Проверок на пустой файл и кода наполнения исходного файла нет, но дописать несложно, они тривиальные.

Добавлено через 1 час 34 минуты
Например, с наполнением исходного файла и выводом его содержимого и результата на экран:
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
  zero: char = '0';
var
  c, p: char;
  dbl: boolean;
  f, g: file of char;
  i: LongInt;
begin
  Randomize;
  Assign(f,'in.bin'); Assign(g,'out.bin');
  Rewrite(f); Rewrite(g);
  WriteLn('Содержимое "in.bin":');
  for i:=1 to 80*5 do begin
    c:=chr(ord('a')+Random(10)); Write(f,c); Write(c);
  end; WriteLn;
  WriteLn('Содержимое "out.bin":');
  Seek(f,FileSize(f)-1); Read(f,p); dbl:=false;
  for i:=FileSize(f)-2 downto 0 do begin
    Seek(f,i); Read(f,c);
    if dbl then dbl:=false
    else if c<>p then begin Write(g,p); Write(p) end
    else begin
      Write(g,zero); Write(zero); dbl:=true;
    end; 
    p:=c;
  end;
  if not dbl then begin Write(g,p); Write(p) end;
  Close(f); Close(g);
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.03.2014, 08:51
Помогаю со студенческими работами здесь

Создать файл целых чисел и переписать компоненты файла в обратном порядке
Создайте файл, компоненты которого являются целыми числами. Напишите программу, переписывающую компоненты файла в обратном порядке. (Новый...

Переписать компоненты файла в обратном порядке
Ребят помогите добить программу на файлы. Условие: Создайте файл f, компоненты которого являются целыми числами. Напишите программу...

Записать в файл h в обратном порядке сначала парные компоненты файла f, затем нечетные компоненты файла g
Даны символьные файлы f и g. Записать в файл h в обратном порядке сначала парные компоненты файла f, затем нечетные компоненты файла g.

Задан файл целых чисел. Переписать компоненты в обратном порядке
#include &lt;stdio.h&gt; #include &lt;string.h&gt; void main() { FILE *file; char *fname = &quot;some_file.txt&quot;; int a; file =...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru