Я хочу, чтобы те числа, которые написаны с ошибкой, т.е. в них присутствует символ просто также и записывались в файл. Помогите найти ошибку в программе.
uses crt;
const
Romans: array[1..13] ofstring=('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=0thenbegin
scratch:='';
for i:=13downto1dowhile (Decimal>=Arabics[i]) dobegin
Decimal:=Decimal-Arabics[i];
scratch:=scratch+Romans[i];
end;
Roman:=scratch;
endelse
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; {считаю количество строк в файле}whilenot eof(fo1) dobegin
readln(fo1,str1);
n:=n+1;
end;
whilenot eof (fo1)dobeginfor i:=1to n dobegin
read(fo1,str1);
write(fz1,Roman(fz1,str1,arb),' ');
end;
end;
write('Файл записан');
close(fo1);
close(fz1);
readln;
end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.