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

 

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