Файлы input.txt и output.txt
Задача: взять строку из файла input.txt, удалить из нее лишние знаки(текст самой программы приведен ниже) и вывести новую строку в файл output.txt.
program Main2; var str:string; a:char; function NewStr(str:string;a:char):string; var s:string; begin s:=str; while Pos(a + a,s) > 0 do delete(s, Pos(a + a,s), 1); NewStr:=s; end; begin readln(str); a:=chr(33); writeln(NewStr(str, a)); readln; end. |
Ни тебе "здрасте", ни "просю помощи"...
А что, собственно, требуется? Дописать в имеющуюся прогу недостающие строки по работе с файлами? ;) |
Да. Нужно взять строку из файла, удалить из нее лишние восклицательные знаки и вывести в другой файл.
|
Стесняюсь спросить...
Приведенный код - это всё, чему Вы научились за семестр по языку Pascal? С такими знаниями Вам сессию никак не сдать. :( Пока не поздно, наймите репетитора. |
Цитата:
Код:
program Main2; |
Владимир, Вам, конечно, видней, но открыть/закрыть поток, причитать/записать в него - этому учат на первых лекциях и практических занятиях. А тут до конца семестра осталось 2 недели!
|
Цитата:
|
Удивляюсь я Вашему оптимизму!
А как же остальной "непройденный" материал? |
Николай, спасибо за совет, но сессию мне, к счастью, сдавать не нужно.
Владимир, большое спасибо. В аргументах функции Pos "галиматья", потому что мне нужно удалить не все восклицательные знаки, а только повторяющиеся(т.е. в количестве больше одного). При запуске программы возникает ошибка "RunError(2)", хотя текстовые файлы находятся в той же папке, что и программа. Не могли бы Вы подсказать в чем ошибка, пожалуйста? |
Не могли бы Вы подсказать в чем ошибка, пожалуйста?
|
Цитата:
А насчет "галиматьи" - приношу извинения: просто Вы так невнятно сформулировали задание... но если повторяющиеся - тогда да, правильно. И даже остроумно. |
Вложений: 2
Видимо, нет.
|
Цитата:
На всякий случай спрошу: а Вы входной файл не забыли подготовить? |
Вложений: 1
Конечно, все текстовые файлы есть.
Пишу в лазарусе, но, на всякий случай, проверила и в паскале. |
Ух-ты! Получилось! Еще раз спасибо! Но если я скажу в чем была ошибка, меня, наверное, побьют.
|
Можно ли как то преобразовать программу, чтобы удалялись не только восклицательные знаки, но еще и запятые?tehno014
|
"Носите женщин на руках. На шею они сами заберутся!" (С) :))
|
Николай, ехидный Вы.:tehnari_ru_267:
|
Дописать программу. Функция
Здравствуйте!
Есть программа, удаляющая лишние восклицательные знаки из строки.(Они считаются лишними, если их подряд больше одного). Помогите дописать ее так, чтобы она удаляла еще и другие лишние знаки, например, запятые. Заранее спасибо за помощь. program Main2; var S:string; a:char; f1,f2:text; function NewStr(S:string;a:char):string; var T:string; begin T:=S; while Pos(a + a,T) > 0 do delete(T, Pos(a + a,s), 1); NewStr:=T; end; begin assign(f1, 'E:\Input.txt'); reset(f1); assign(f2, 'E:\Output.txt'); rewrite(f2); a:=chr(33); readln(f1,s); writeln(f2,NewStr(s, a)); close(f1); close(f2); end. |
Это точно! Но прозорливый... ;)
|
Цитата:
P.S. А всё-таки в чём была проблема с запуском программы? Уж поделитесь, не побьём. Любопытно... P.P.S. Немного модераторской воркотни. Абсолютно ни к чему ради этих запятых новую тему создавать. Давайте уж здесь.Тем более, что в листинге - ошибки: в функции во втором Pos вместо "T" стоит "s", что приводит к сбою. Короче говоря, так: Код:
program Main2; |
А зачем вводить новую переменную для нового знака? А если я захочу удалить много знаков - будет много переменных? Может быть, так лучше?
PHP код:
|
Цитата:
1. Я для кого в красном абзаце указываю на ошибку: в функции в ОБОИХ Pos должна фигурировать строка "T", а не в первом случае - "T", а во втором - "s"? Всё мимо, продолжаете тащить ошибку. 2. Непонятно, в какой мере эта программа решает задачу "удалить много знаков"? По-моему, совсем не решает. И вообще это просто старый листинг, да еще и, как сказано выше, с ошибкой. Удаляет (после исправления ошибки) только дубли восклицательного знака. Задачу "удаления многих знаков" можно организовать по-разному. Например, вводить удаляемый символ по запросу с клавиатуры. Но тогда программу необходимо зациклить, и при этом организовать перезапись файла Output в Input после каждого удаления. Или можно организовать массив удаляемых символов, а в теле функции организовать цикл по этому массиву. |
PHP код:
|
Пожалуй. Хороший вариант.
|
Проверьте, пожалуйста. Первое слово строки должно начинаться с буквы. Функция должна удалять все предшествующие букве символы. Эта удаляет лишь половину(из за того, что к i всегда прибавляется единица). Как это исправить?
PHP код:
|
Получилось)
|
Часовой пояс GMT +4, время: 10:48. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.