IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Помогите решить задачу на работу с файлами., Заданное число, от 1 до 1999, напечатать римскими цифрами XLVI и т.д.
User
сообщение 8.04.2013 12:46
Сообщение #1





Группа: Пользователи
Сообщений: 1
Пол: Женский

Репутация: -  0  +


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



uses crt;

const
Romans: array[1..13] of string=('I','IV','V','IX','X','XL','L','XC','C','CD','D','CM','M');
Arabics:array[1..13]of integer=(1,4,5,9,10,40,50,90,100,400,500,900,1000);
{функция перевода чисел в римские}
function Roman(var fz2:text;var str:string; Decimal:integer):string;
var
i,code:integer;
scratch:string;
begin
val(str,decimal,code);
if code=0 then
begin
scratch:='';
for i:=13 downto 1 do
while (Decimal>=Arabics[i]) do
begin
Decimal:=Decimal-Arabics[i];
scratch:=scratch+Romans[i];
end;
Roman:=scratch;
end
else
write(fz2,str);
end;
var
str1,fo,fz:string;
i,n,arb:integer;
fo1,fz1:text;
ch1:char;
begin
clrscr;
writeln('Введите имя файла с исходными данными');
readln(fo);
assign(fo1,fo);
{$I-}
writeln('Введите имя файла, куда необходимо записать результат');
readln(fz);
assign(fz1,fz);
reset(fo1);
{$I+}
rewrite(fz1);
n:=0; {считаю количество строк в файле}
while not eof(fo1) do
begin
readln(fo1,str1);
n:=n+1;
end;
while not eof (fo1)do
begin
for i:=1 to n do
begin
read(fo1,str1);
write(fz1,Roman(fz1,str1,arb),' ');
end;
end;
write('Файл записан');
close(fo1);
close(fz1);
readln;
end.



Сообщение отредактировано: User - 8.04.2013 17:38
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 0:34
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"