Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 29.04.2015
Сообщений: 15
1

В текстовом файле заменить все цифры на римские

03.05.2015, 13:16. Показов 3109. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет.
Вот задача к сессии... не хватает меня что-то на нее..

Дан файл C:\1.txt, заменить в нем все цифры на римские.

Собственно найти эти символы могу а как их заменить?
Ведь пока файл открыт для чтения в нем писать нельзя, а если открыть для записи то он переписывается.
Как же в нем произвести эти самые замены..

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
uses crt;
var
a:array [1..1000] of integer;
f:text;
i:integer;
begin
assign(f,'C:\1.txt');
reset(f);
i:=0;
while not eof(f) do begin
i:=i+1;
read(f,a[i]);
 
?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.05.2015, 13:16
Ответы с готовыми решениями:

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

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

Заменить все пробелы в текстовом файле запятыми
1. В текстовом файле записаны фразы, который отделены друг от друга точками, слова – пробелами и...

Написать функцию, заменяющую в текстовом файле все цифры и знаки “+” и “ - ” на пробелы
1 Написать функцию, добавляющую литеру “с” в начало и конец текстового файла. 2 Написать...

7
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
03.05.2015, 13:27 2
Цитата Сообщение от tiesto_ Посмотреть сообщение
Как же в нем произвести эти самые замены..
В текстовом файле никак, нужно считывать строки, изменять и писать в новый файл.
В конце можно удалить старый файл (erase) и переименовать новый в старый (rename)
0
0 / 0 / 0
Регистрация: 29.04.2015
Сообщений: 15
03.05.2015, 14:07  [ТС] 3
Пытаюсь через новый файл, но что-то не выходит

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
var
f:text;
new:text;
i,c:char;
begin
assign(f,'C:\1.txt');
assign(new,'C:\2.txt');
reset(f);
rewrite(new);
 
while not eof(f) do begin
readln(f,c);
 
 
if c='1' then write(new,'I') else
if c='2' then write(new,'II') else
if c='3' then write(new,'III') else
if c='4' then write(new,'IV') else
if c='5' then write(new,'V') else
if c='6' then write(new,'VI') else
if c='7' then write(new,'VII') else
if c='8' then write(new,'VIII') else
if c='9' then write(new,'IX') else
if c='10' then write(new,'X') else
write(new,c);
 
end;
 
close(f);
close(new);
end.

Содержимое первого файла вот такое:

sdfdsf
1 sdfdsf
2 sdfds
3 gggg


Во второй пишет вот что:

sIIIIII
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
03.05.2015, 14:25 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Так читай не символы, а строки, преобразуй их и пиши в новый файл. И что, по твоему 'VIII' это один символ?

Добавлено через 12 минут
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
var s:string;
    c:char;
    i:integer;
...................
while not eof(f) do
 begin
  readln(f,s);
  for i:=length(s) downto 1 do
  if s[i] in ['1'..'9'] then
   begin
     c:=s[i];
     delete(s,i1);
     case c of
     '1':insert('I',s,i);
     '2':insert('II',s,i);
     '3':insert('III',s,i);
     '4':insert('IV',s,i);
     '5':insert('V',s,i);
     '6':insert('VI',s,i);
     '7':insert('VII',s,i);
     '8':insert('VIII',s,i);
     '9':insert('IX',s,i);//цифр больше нет, 10 не цифра
     end;
   end;
  writeln(new,s);
 end;
0
0 / 0 / 0
Регистрация: 29.04.2015
Сообщений: 15
03.05.2015, 15:04  [ТС] 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
29
30
31
32
33
34
35
var s:string;
    c:char;
    i:integer;
    f,new:text;
begin
assign(f,'C:\1.txt');
assign(new,'C:\2.txt');
reset(f);
rewrite(new);
 
while not eof(f) do
 begin
  readln(f,s);
  for i:=length(s) downto 1 do
  if s[i] in ['1'..'9'] then
   begin
     c:=s[i];
     delete(s,i);    Вот тут <=================
     case c of
     '1':insert('I',s,i);
     '2':insert('II',s,i);
     '3':insert('III',s,i);
     '4':insert('IV',s,i);
     '5':insert('V',s,i);
     '6':insert('VI',s,i);
     '7':insert('VII',s,i);
     '8':insert('VIII',s,i);
     '9':insert('IX',s,i);
     end;
   end;
  writeln(new,s);
 end;
 close(f);
 close(new);
 end.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
03.05.2015, 15:07 6
Лучший ответ Сообщение было отмечено tiesto_ как решение

Решение

Pascal
1
delete(s,i,1);
0
0 / 0 / 0
Регистрация: 29.04.2015
Сообщений: 15
03.05.2015, 17:23  [ТС] 7
Ура)
Спасибо большое
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
03.05.2015, 17:28 8
Цитата Сообщение от tiesto_ Посмотреть сообщение
но пишет неверное кол-во фактических параметров:
А заглянуть в Справку и посмотреть что такое delete и как оно пишется уже влом, 100% халява нужна?
0
03.05.2015, 17:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.05.2015, 17:28
Помогаю со студенческими работами здесь

Заменить в текстовом файле Roman.txt все ' . ' символом ' ! '
Заменить в текстовом файле Roman.txt все ' . ' символом ' ! '? Как сделать помогите!!))

В текстовом файле заменить все прописные буквы на строчные
В тестовом файле заменить все прописные буквы на строчные.

В текстовом файле заменить все символы ’0’ на символ '1' и наоборот.
Помогите решить... Дан текстовый файл. Заменить все символы ’0’ на символ '1' и наоборот.

В текстовом файле заменить все группы пробелов на один пробел
В текстовом файле заменить все группы пропусков , больше 1 на 1 пробел. Помогите решить задачу....


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru