1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Разработать блок-схему алгоритма и составить программу обработки текстовых данных, хранящихся в произвольном файле на магнитном диске. Вид обработки данных ‴Включение в каждую строку заданной последовательности символов после символа с заданным номером‴. Текстовые данные, подлежащие обработке, заносятся в файл с помощью редактора текста. В программе предусмотреть ввод с терминала имен входного и выходного (в случае необходимости) файлов, вывод на печать входного и выходного файлов. Предусмотреть запись выходного файла на диск. Длина строки файла не должна превышать 80 символов.
Помогите доработать мою программу.
program kurs2; Uses CRT; Var f:text; n,m:string[80]; pos,i:integer; Begin clrscr; writeln('pos'); readln(pos); writeln('m'); readln(m); Assign(f,'c:\kurs\input.txt'); reset(f); read(f,n); writeln('n=',n); insert(m,n,pos); Assign(f,'c:\kurs\output.txt'); rewrite(f); write(f,n); writeln('new=',n); close(f); readln; end.
М
Граф Ананий, потрудись прочесть правила, пожалуйста, а также выполнять их (речь о п.5)
program kurs2; {никогда не вставляй CRT, если не жизненно важно} Var f,g: text; {тебе нужно два файла для параллельного ввода/вывода} n,m:string[80]; pos,i:integer; {а зачем тебе i?}
Begin {никогда не очищай экран, если не жизненно важно} write('pos '); {лучше без Ln, но с пробелом или = в конце} readln(pos); write('Insertion '); {лучше не имя переменной, а что-то более говорящее} readln(m); {не пиши тут директорию явно, работай в текущей. Кому надо - введут полное имя} Assign(f,'input.txt'); {вообще-то, имена файлов, кажется, надо было тоже ввести..} reset(f);; Assign(g,'output.txt'); rewrite(g); while not EoF(f) do begin {нужен цикл по строкам до окончания файла} readLn(f,n); {тут надо ReadLn, а не Read, иначе не прочтет вторую и дальше} writeln('old=',n); if Length(n)>=pos then {я бы проверил, есть ли вообще нужный символ..} insert(m,n,pos+1); {нужно прибавить 1, иначе вставишь перед символом с номером pos} WriteLn(g,n); {запись в выходной файл, тоже с Ln} writeln('new=',n); {пересено из конца} end; Close(g); close(f); readln; end.
Разбирайся, задавай вопросы. Пожалуйста, обрати внимание на форматирование кода - оно тебе очень поможет в будущем.
Еще одно: у тебя незакрытая файловая переменная f используется для нового файла - это грубая ошибка!
--------------------
я - ветер, я северный холодный ветер я час расставанья, я год возвращенья домой
Что сделать для обработки, при введении текста с экрана.
Неясно, что ты имеешь в виду. Можешь сказать поподробнее? Вместо входного файла - ввод с клавы? да? Немного побольше слов, пожалуйста..
И, пожалуйста, используй тэги. Для кода - code, для цитаты - quote, и т.п. Видишь разные кнопочки над формой ввода? Они обрамляют выделенный текст тэгами. Выдели текст мышкой и нажми, например, B. А потом нажми кнопку предпросмотра (она внизу). Поэкспериментируй.
--------------------
я - ветер, я северный холодный ветер я час расставанья, я год возвращенья домой
Неясно, что ты имеешь в виду. Можешь сказать поподробнее? Вместо входного файла - ввод с клавы? да? Немного побольше слов, пожалуйста.. И, пожалуйста, используй тэги. Для кода - code, для цитаты - quote, и т.п. Видишь разные кнопочки над формой ввода? Они обрамляют выделенный текст тэгами. Выдели текст мышкой и нажми, например, B. А потом нажми кнопку предпросмотра (она внизу). Поэкспериментируй.
Не страшно. Разбирайся, распутывайся. Побольше экспериментируй.
У меня получилось такого вида:
program kurs2;
var f,g:text; n,m:string[80]; v,pos:integer;
begin write('Vvedite vid vvoda dannyh 1 ili 2 '); readln(v); if v=1 then begin assign(f,'c:\kurs\input.txt'); reset(f); assign(g,'c:\kurs\output.txt'); rewrite(g); write('Vvedite nomer pozicii '); readln(pos); write('Vvedite vvodimye '); readln(m); while not Eof(f) do begin readln(f,n); writeln('old=',n); if length(n)>=pos then insert(m,n,pos+1); writeln(g,n); writeln('new=',n); end; close(g); close(f); end else if v=2 then begin write('Vvedite 1-iy text'); readln(f); write('Vvedite 2-oy text'); readln(g); write('Vvedite nomer pozicii '); readln(pos); write('Vvedite vvodimye '); readln(m); while not Eof(f) do begin readln(f,n); writeln('old=',n); if length(n)>=pos then insert(m,n,pos+1); writeln(g,n); writeln('new=',n); end; close(g); close(f); end else writeln('Oshibka poprobuyte zanovo');
readln; end.
Но нужно еще доработать.KURS02.PAS ( 1.18 килобайт )
Кол-во скачиваний: 414