• Ребятушки помогите родные!!!

    Дан символьный файл f.Группы символов,разделенные пробелами(одним или несколькими) и не содержащие пробелов внутри себя,будем называть словами.Удалить из файла все однобуквенные слова и лишние пробелы.Результат записать в файл g.

Ответы 11

  • Извиняюсь за монстрика, зато универсальный, легко можно перенастроить на самые разные хотелки.
  • Изменил программу чтобы нормально обрабатывала пустые строки, если они встречаются в файле
    • Автор:

      oscar8uts
    • 6 лет назад
    • 0
  • в этом случае выводим пустую строку
  • 5-это один символ
  • Да нет, это фрагмент был.... там еще слова есть....
  • короче у нас сейчас 3 часа ночи решите сами пока
  • Лишние пробелы - это пробелы, удаление которых не повлияет на содержание текста. А то, о чем Вы говорите - это формулируется так: "Удалить односимвольные слова с окружающими их пробелами."
  • Большое спасибо ребят ,за то что помучились :)
  • Спасибо тут выражают кнопочкой)
  • program gt;var f,g:text;s,b:string;l,i:integer;beginassign(f,'c:\input.txt');reset(f);assign(g,'c:\output.txt');rewrite(g);while not eof(f)dobeginreadln(f,s);l:=length(s);b:='';if (s[2]<>' ') then b:=s[1];i:=1;while i<l-1 dobegini:=i+1;if (s[i-1]=' ') and (s[i]<>' ') and (s[i+1]=' ') then i:=i+1 else b:=b+s[i];end;if (s[l-1]<>' ') then b:=b+s[l];writeln(g,b);end;close(f);close(g);end.
  • function PosBlank(s: string; cursor: integer): integer;{Возвращает позицию первого пробельного символа в строке s, начиная с позиции, указанной cursor. Если такого символа нет, возвращает 0.}var  n: integer;begin  n := Length(s);  while (s[cursor] <> ' ') and (cursor < n) do cursor := cursor + 1;  if cursor = n then    if s[cursor] = ' ' then PosBlank := n else PosBlank := 0  else    PosBlank := cursorend;function PosNonBlank(s: string; cursor: integer): integer;{Возвращает позицию первого непробельного символа в строке s, начиная с позиции, указанной cursor. Если такого символа нет, возвращает 0.}var  n: integer;begin  n := Length(s);  while (s[cursor] = ' ') and (cursor < n) do cursor := cursor + 1;  if cursor = n then    if s[cursor] = ' ' then PosNonBlank := 0 else PosNonBlank := n  else    PosNonBlank := cursorend;procedure GetWord(s: string; var cursor: integer; var wd: string);{Процедура помещает в wd очередное слово из строки s Начало слова указано в cursor, после завершения процедуры cursor будет указывать на первый пробельный символ, следующий за найденным словом. Лидирующие и хвостовые пробельные символы усекаются. Если слово не найдено, то в wd помещается пустая строка}var  n, ibegin: integer;begin  n := length(s);  if n>0 then    begin    cursor := PosNonBlank(s, cursor);    if cursor > 0 then    begin      ibegin := cursor;      cursor := PosBlank(s, cursor);      if cursor > 0 then wd := Copy(s, ibegin, cursor - ibegin)      else wd := Copy(s, ibegin, n - ibegin + 1)    end    else      wd := ''    end  else    begin    wd:='';    cursor:=0    endend;var  c, cc, w: string;  ic: integer;  fin, fout: Text;begin  Assign(fin, 'input.txt');  Reset(fin);  Assign(fout, 'output.txt');  Rewrite(fout);  while not Eof(fin) do  begin    ic := 1;    cc := '';    readln(fin, c);    while ic > 0 do    begin      GetWord(c, ic, w);      if w <> '' then cc := cc + ' ' + w    end;    cc := Copy(cc, 2, length(cc) - 1);    writeln(fout, cc)  end;  Close(fin);  Close(fout);end.
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years