Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Файлы input.txt и output.txt (http://www.tehnari.ru/f41/t93116/)

Aksinia 15.12.2013 14:49

Файлы 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.

Николай_С 15.12.2013 15:09

Ни тебе "здрасте", ни "просю помощи"...
А что, собственно, требуется?
Дописать в имеющуюся прогу недостающие строки по работе с файлами? ;)

Aksinia 15.12.2013 15:27

Да. Нужно взять строку из файла, удалить из нее лишние восклицательные знаки и вывести в другой файл.

Николай_С 15.12.2013 18:13

Стесняюсь спросить...
Приведенный код - это всё, чему Вы научились за семестр по языку Pascal?
С такими знаниями Вам сессию никак не сдать. :(
Пока не поздно, наймите репетитора.

Vladimir_S 15.12.2013 18:56

Цитата:

Сообщение от Николай_С (Сообщение 981296)
Стесняюсь спросить...
Приведенный код - это всё, чему Вы научились за семестр по языку Pascal?
С такими знаниями Вам сессию никак не сдать. :(
Пока не поздно, наймите репетитора.

Коля, да ладно Вам! Если девушка этому научилась, то это в бесконечное число раз больше обычного уровня лоботрясов, которые к концу семестра вдруг обнаруживают, что они вообще ни бэ, ни мэ, а злые преподы им никак зачет не ставят. Ну не осилить файловых операций - ничего, поможем.
Код:

program Main2;
var
 S:string;
 A:char;
 f1,f2:Text;

function NewStr(NS:string;NA:char):string;
var T:string;
begin
 T:=NS;
 while Pos(NA,T) > 0 do delete(T, Pos(NA,T), 1);
 NewStr:=T;
end;

begin
 Assign(f1,'Input.txt');
 ReSet(f1);
 Assign(f2,'Output.txt');
 ReWrite(f2);
 A:='!';
 Repeat
  Readln(f1,S);
  Writeln(f2,NewStr(S,A));
 Until EoF(f1);
 Close(f1);
 Close(f2);
end.

А так программа, в целом, составлена грамотно, вот только в аргументах функции Pos какая-то галиматья. И еще, Аксинья, одно замечание. Обозначать формальные и фактические параметры процедур и функций одинаково хоть и допускается, но нежелательно: приводит к путанице. Поэтому я там кое-что переобозначил. Кроме того, старайтесь не использовать зарезервированные слова языка программирования в качестве идентификаторов: могут возникнуть ошибки. Так, "Str" - это имя стандартной процедуры преобразования числа в строку. Не нужно так обозначать переменную.

Николай_С 15.12.2013 19:54

Владимир, Вам, конечно, видней, но открыть/закрыть поток, причитать/записать в него - этому учат на первых лекциях и практических занятиях. А тут до конца семестра осталось 2 недели!

Vladimir_S 15.12.2013 19:58

Цитата:

Сообщение от Николай_С (Сообщение 981324)
А тут до конца семестра осталось 2 недели!

Аж целых!!! :D:D:D

Николай_С 15.12.2013 20:07

Удивляюсь я Вашему оптимизму!
А как же остальной "непройденный" материал?

Aksinia 15.12.2013 20:47

Николай, спасибо за совет, но сессию мне, к счастью, сдавать не нужно.
Владимир, большое спасибо. В аргументах функции Pos "галиматья", потому что мне нужно удалить не все восклицательные знаки, а только повторяющиеся(т.е. в количестве больше одного).
При запуске программы возникает ошибка "RunError(2)", хотя текстовые файлы находятся в той же папке, что и программа. Не могли бы Вы подсказать в чем ошибка, пожалуйста?

Aksinia 15.12.2013 20:55

Не могли бы Вы подсказать в чем ошибка, пожалуйста?


Часовой пояс GMT +4, время: 05:45.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.