Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 09.10.2018
Сообщений: 87

Переписать в новый файл из исходного сначала все нечѐтные символы, а затем все чѐтные в обратном порядке

20.01.2021, 13:34. Показов 754. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Дано задание.
Дан символьный файл F. Переписать в файл G сначала все нечѐтные его символы, а затем все чѐтные в обратном порядке.

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
type rad = file of integer;{определяем имя типа файловых данных}
  var f, g : rad; {определяем переменную с типом rad }
      n,k: integer;
      
      
procedure nechet (var f,g :rad; n:integer);{описываем процедуру  }
  var i,c, k: integer;
    begin
      rewrite (f);{открываем (создаем файл))}
      for i:=2 to n  do {запускаем цикл:перебираем все символы, начиная со 2 и заканчивая n}
         begin       
           c:=0;
             for k:=2 to i do {начинаем перебирать цифры, начиная с 2}
                 if i mod 2<>1 then {задаем условие, что число должно быть нечетным}
                    c:=c+1;{cчетчик увеличиваем на 1}
                If c=1 then write(g,i); {если находим это число, тогда записываем его в файл g}
        end; 
    
    end;
 
//procedure obrat (var f:rad; n:integer);{описываем процедуру  }
 
 
begin
      assign (f,'proba.txt');{связываем файл proba.txt с переменной f}
      assign (g,'proba2.txt');
      write ('введите количество элементов списка =  ');{вводим n-значение последнего из элемонтов, с которыми будем работать}
      readln (n);{выводим его на экран}
      nechet (f,g,n);{запускаем процедуру }
      reset(f);{открываем файл proba.txt}
      reset(g);
      
      while not eof (f) do{запускам цикл, который будет работать, пока не достигнут конец файла}
          begin
            read(f,k);{вводим значения}
            write(k:5);{выводим на экран}
          end;
      close (f);{закрываем файл}
      close (g);     
   
 end.
Я попыталась создать процедуру, но программа выдает ошибку: не открыт файл. Но я вроде задала процедуру открытия. Модскажите пожалуйста
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.01.2021, 13:34
Ответы с готовыми решениями:

Работа со списками и файлами (Двусвязный список, структуры, работа с файлами)
1. Организовать ввод данных структуры и их вывод на экран. 2. Организовать ввод данных структуры из файла и их выгрузку в файл. 3....

Работа с файлами , хотелось бы с windows system файлами
всем привет, нужна интересная идея по программированию, работа с файлами , хотелось бы с windows system файлами, у вас есть какая-то идея?...

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

4
 Аватар для canadamoscow
1179 / 430 / 194
Регистрация: 23.03.2020
Сообщений: 1,021
Записей в блоге: 1
20.01.2021, 15:54
D 29 строке запуск процедуры которая в строке 16 делает запись в файл g. А где же перед этим rewrite(g); или append(g); ?
При этом присутствует открытие файла g на чтение в строке 31 и его закрытие в строке 39, без единого обращения к нему.
0
0 / 0 / 0
Регистрация: 09.10.2018
Сообщений: 87
21.01.2021, 00:08  [ТС]
Спасибо, что указали на ошибку. Исправила.
Но все равно программа только просит ввести количесиво элементов и все.
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
type rad = file of integer;{определяем имя типа файловых данных}
  var f, g : rad; {определяем переменную с типом rad }
      n,k: integer;
      
      
procedure nechet (var f,g :rad; n:integer);{описываем процедуру  }
  var i,c, k: integer;
    begin
      rewrite (f);{открываем (создаем файл))}
      rewrite (g);{открываем (создаем файл))}
      for i:=2 to n  do {запускаем цикл:перебираем все символы, начиная со 2 и заканчивая n}
         begin       
           c:=0;
             for k:=2 to i do {начинаем перебирать цифры, начиная с 2}
                 if i mod 2<>1 then {задаем условие, что число должно быть нечетным}
                    c:=c+1;{cчетчик увеличиваем на 1}
                If c=1 then write(g,i); {если находим это число, тогда записываем его в файл g}
        end; 
    
    end;
 
//procedure obrat (var f:rad; n:integer);{описываем процедуру  }
 
 
begin
      assign (f,'proba1.txt');{связываем файл proba.txt с переменной f}
      assign (g,'proba2.txt');
      write ('введите количество элементов списка =  ');{вводим n-значение последнего из элемонтов, с которыми будем работать}
      readln (n);{выводим его на экран}
      nechet (f,g,n);{запускаем процедуру }
      reset(f);{открываем файл proba.txt}
      reset(g);
      
      while not eof (f) do{запускам цикл, который будет работать, пока не достигнут конец файла}
          begin
            read(f,k);{вводим значения}
            write(k:5);{выводим на экран}
          end;
      close (f);{закрываем файл}
      close (g);     
   
 end.
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
21.01.2021, 07:12
Ann1984, во-первых, в условии сказано
Цитата Сообщение от Ann1984 Посмотреть сообщение
Дан символьный файл F
Вы же создаёте какой файл?
И потом, при чём здесь введите количество элементов списка =?
Файл уже же дан. Чего ещё вводить?

Т.е., как я понимаю, нужно одно из двух:

либо прочитать весь файл в память (массив, список или ещё что-то), а затем, манипулируя этими данными, выполнить запись результата в другой файл,

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

Что вам нужно?
0
 Аватар для canadamoscow
1179 / 430 / 194
Регистрация: 23.03.2020
Сообщений: 1,021
Записей в блоге: 1
21.01.2021, 08:28
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
begin
 //Создадим типизированный файл proba1.dat, наполним его числами и закроем
 WriteElements&<Integer>('proba1.dat', ArrRandom(20));
 
 var f, g: file of integer;
 Assign(f, 'proba1.dat');
 Assign(g, 'proba2.dat');
 Reset(f); //открыть на чтение
 Rewrite(g); //открыть(создать) на перезапись
 var n, position: integer;
 
 while not Eof(f) do 
  begin
   position += 1;  
   Read(f, n); 
   if odd(n) then Write(g, n) 
  end;
 
//перебираем элементы с конца файла
 while position > 0 do 
  begin 
    position -= 1;
    Seek(f, position); //установить файловый указатель на элемент номер position
    Read(f,n); 
    if not odd(n) then Write(g, n) 
  end;
 
 Close(f);
 Close(g);
 
//Проверка 
 f.Elements.Println; //вывести содержимое proba1.dat
 g.Elements.Println; //вывести содержимое proba2.dat
end.
Добавлено через 5 минут
или через список
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
begin
 //Создадим типизированный файл proba1.dat, наполним его числами и закроем
 WriteElements&<Integer>('proba1.dat', ArrRandom(20));
 
 var f, g: file of integer;
 Assign(f, 'proba1.dat');
 Assign(g, 'proba2.dat');
 Reset(f); //открыть на чтение
 Rewrite(g); //открыть(создать) на перезапись
 var n: integer;
 var spisok := new List<integer>;
 
 while not Eof(f) do 
  begin
   Read(f, n); 
   if odd(n) then Write(g, n) else spisok += n;
  end;
 
 Reverse(spisok);
 foreach n in spisok do Write(g, n);
 
 Close(f);
 Close(g);
 
//Проверка 
 f.Elements.Println; //вывести содержимое proba1.dat
 g.Elements.Println; //вывести содержимое proba2.dat
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.01.2021, 08:28
Помогаю со студенческими работами здесь

Работа с файлами. Работа со структурами и файлами Си
Написать программу вычисления стоимости покупки с учетом скидки. Скидка 3% предоставляется в случае, если сумма покупки больше 500 рублей,...

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

Лабораторная работа №5. Работа с файлами и алгоритмы сортировки
1. Написать функцию Load для считывания из текстового файла (например, Workers.txt) информации о работниках и заработной плате. В первой...

Работа с файлами, чтение/работа со строкой
Доброго времени суток. Начал работать с C++ Builder 6. Есть текстовый файл .txt с различными строками, как можно производить...

Работа с файлами
Передо мной стоит задача в реализации такой программы: Дан файл с фактами, которые располагают сведениями о поисковых серверах: название...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru