Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на языке Pascal


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Асмик Гаряка
Статус: Академик
Рейтинг: 8752
∙ повысить рейтинг »
Орловский Дмитрий
Статус: Советник
Рейтинг: 6913
∙ повысить рейтинг »
lamed
Статус: Академик
Рейтинг: 5631
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Pascal (Паскаль)

Номер выпуска:1219
Дата выхода:20.12.2011, 19:30
Администратор рассылки:Boriss (Академик)
Подписчиков / экспертов:159 / 171
Вопросов / ответов:1 / 1

Консультация # 184794: Здравствуйте, уважаемые эксперты! Прошу вас решить в среде Turbo Pascal следующую задачу: дан начальный текстовый файл, содержащий символы среди которых есть цифры. Требуется написать программу, выводящую в конечный текстовый файл число состоящее из цифр каждой строки, образуя при этом минимальное число, в случае отсутствия цифр в строке вывест...


Консультация # 184794:

Здравствуйте, уважаемые эксперты! Прошу вас решить в среде Turbo Pascal следующую задачу: дан начальный текстовый файл, содержащий символы среди которых есть цифры.
Требуется написать программу, выводящую в конечный текстовый файл число состоящее из цифр каждой строки, образуя при этом минимальное число, в случае отсутствия цифр в строке вывести -1. Если в строке находится несколько одинаковых цифр, то в результат записывается только одно из них. Имя исходного и результирующего файла вводятся пользователем с клавиатуры. При вводе производится проверка на существование файла. Использовать процедуры и функции с параметрами. Файлы передавать в параметрах через VAR.
Пример:
Исходные строки:
9433yr udsf2
percent
Результат:
2349
-1

Дата отправки: 14.12.2011, 18:59
Вопрос задал: Татьяна Турунжева (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Тимошенко Дмитрий (Практикант):

Здравствуйте, Татьяна Турунжева!

Вот программа по вашему заданию:

Код :
program z184794;
  var fIn,fOut: Text; {Файловые переменные}
      name: string;   {Переменная для имени файла}

  {Функция обработки одиночной строки файла}
  {Возвращает результат обработки входной строки по заданным правилам}
  function ProcessString(Buf: string):string;
    var i: char; {Счетчик}
        result: string; {Переменная для временного хранения результата}
  begin
    result:='';
    for i:='0' to '9' do
      if pos(i,Buf)<>0 then
        result:=result+i;
    if result='' then ProcessString:='-1' else ProcessString:=result;
  end;

  {Процедура обработки заданных файлов}
  {В параметрах получает файловые переменные с "открытыми" файлами}
  procedure ProcessFiles(var fIn,fOut: text);
    var Buffer: string;
  begin
    while not(Eof(fIn)) do begin
      readln(fIn,Buffer);
      writeln(fOut,ProcessString(Buffer));
    end;
    close(fIn);
    close(fOut);
  end;

{Основная программа}
{Запрашивает имена файлов, проверяет наличие входного файла,}
{открывает их и запускает процедуру обработки}
begin
  write('Введите имя входного файла:');
  readln(name);
  Assign(fIn,name);
  {$I-}
  reset(fIn);
  {$I+}
  if IOResult<>0 then begin
    writeln('Файл не найден!');
    halt(1);
  end;
  write('Введите имя выходного файла:');
  readln(name);
  Assign(fOut,name);
  rewrite(fOut);
  ProcessFiles(fIn,fOut);
  writeln('Сделано.');
end.

В коде достаточно прозрачно все вроде. Будут вопросы задавайте в минифорум.
И еще одно: если в строке встретится 0, то число получится вида 0123, что не очень красиво, по-моему.
Мне кажется что в таком случае правильнее было бы 1023. Если нужно переделаю, или сами.

С уважением, Дмитрий.

Консультировал: Тимошенко Дмитрий (Практикант)
Дата отправки: 14.12.2011, 21:06

5
нет комментария
-----
Дата оценки: 14.12.2011, 22:22

Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!



В избранное