Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2008, 16:40   #1
Horknee
Пользователь
 
Регистрация: 21.09.2008
Сообщений: 70
Стрелка Решить задачу на обработку текста.

Добрый день всем.
Подскажите как можно сделать задачу, ну или какие функции использовать...
Вывести на печать все строки из файла(отдельный файл *.txt), длина которых больше 15 символов, всюду заменяя 0(ноль) на *.
Horknee вне форума Ответить с цитированием
Старый 03.11.2008, 17:41   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,689
По умолчанию

Цитата:
Сообщение от Horknee Посмотреть сообщение
Подскажите как можно сделать задачу, ну или какие функции использовать...
Если подсказать, то так. Проще некуда.
Код:
var
  f: text;
  s: string;
  d: integer;
begin
  assign(f, 'MyFile.txt');
  reset(f);
  while not eof(f) do//до конца файла
  begin
    читаем строку {readln}
    если длина {length} > 15 тогда 
      в цикле {while pos('0', s) > 0 do begin....} ищем вхождение символа "0"}
        d := pos('0', s); //в каком месте строки найден 0
        удалить 0 {delete},
        вставить * {insert}    
      вывести на экран {writeln}
  end;
  close(f);
  readln
end.

Последний раз редактировалось eoln; 03.11.2008 в 17:44.
eoln вне форума Ответить с цитированием
Старый 03.11.2008, 22:20   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
цикле {while pos('0', s) > 0 do begin....} ищем вхождение символа "0"}
d := pos('0', s); //в каком месте строки найден 0
удалить 0 {delete},
вставить * {insert}
Короче
for i:=1 to length(s) do
if s[i]='0' then s[i]:='*';
puporev вне форума Ответить с цитированием
Старый 04.11.2008, 15:13   #4
Horknee
Пользователь
 
Регистрация: 21.09.2008
Сообщений: 70
По умолчанию

оО спасибо большое, что отозвались...буду разбираться...
Horknee вне форума Ответить с цитированием
Старый 04.11.2008, 15:44   #5
Horknee
Пользователь
 
Регистрация: 21.09.2008
Сообщений: 70
По умолчанию

вот что-то пытался доделать, но не выходит..((
Код:
program str;
uses crt;
var
  f: text;
  s: string;
  d: integer;
  i: integer;
begin
  clrscr;
  assign(f, 'myfile.txt');
  reset(f);
  while not (eof(f)) do
  begin
    readln(s);
    if (length(s)>15) then
      for i:=1 to length(s) do
     if s[i]='0' then s[i]:='*';
  writeln(s[i]);
  end;
  close(f);
  readln
end.
Horknee вне форума Ответить с цитированием
Старый 04.11.2008, 15:58   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
readln(s);
Откуда строки читаем? Напиши
readln(f,s);
puporev вне форума Ответить с цитированием
Старый 04.11.2008, 16:07   #7
Horknee
Пользователь
 
Регистрация: 21.09.2008
Сообщений: 70
По умолчанию

исправил, еще возле readln в конце поставил ; , но как-то программа не работает, в смысле работает, но выводит не то, что надо...
Horknee вне форума Ответить с цитированием
Старый 04.11.2008, 16:20   #8
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
но как-то программа не работает, в смысле работает, но выводит не то, что надо...
Ужас, как понятно, почти по китайски. А точка с запятой перед end и until и нафиг не нужна.
А в программе действительно несколько ошибок, которые если бы немного думал, сам бы нашел, может тебе специально так написали.
Перепиши.
Код:
program str;
uses crt;
var
  f: text;
  s: string;
  i: integer;
begin
  clrscr;
  assign(f, 'myfile.txt');
  reset(f);
  while not eof(f) do
    begin
      readln(f,s);
      if (length(s)>15) then
        begin
          for i:=1 to length(s) do
          if s[i]='0' then s[i]:='*';
          writeln(s);
        end;
    end;
  close(f);
  readln
end.
puporev вне форума Ответить с цитированием
Старый 04.11.2008, 16:33   #9
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,689
По умолчанию

Цитата:
Сообщение от puporev Посмотреть сообщение
может тебе специально так написали.
Неа, я там где begin\end нужны отступы (табуляцию) поставил
Вобщем как всегда фраза "Подскажите как можно..." перешла в полное решение.
eoln вне форума Ответить с цитированием
Старый 04.11.2008, 16:41   #10
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Я вобще не понимаю откуда он writeln(s[i]) взял, у тебя вроде нету. Хуже нет когда не понимают и в код лезут.
puporev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
реализовать обработку массива Danilyuk Паскаль, Turbo Pascal, PascalABC.NET 2 18.06.2008 16:35
Помогите решить задачу Vegus Общие вопросы C/C++ 1 07.05.2008 17:49
Помогите решить задачу!!! W_P Паскаль, Turbo Pascal, PascalABC.NET 1 04.03.2008 21:54