IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Обработка текстовых данных, Операции над ними
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской
Реальное имя: Ананий

Репутация: -  0  +


Разработать блок-схему алгоритма и составить программу обработки текстовых данных, хранящихся в произвольном файле на магнитном диске. Вид обработки данных ‴Включение в каждую строку заданной последовательности символов после символа с заданным номером‴. Текстовые данные, подлежащие обработке, заносятся в файл с помощью редактора текста. В программе предусмотреть ввод с терминала имен входного и выходного (в случае необходимости) файлов, вывод на печать входного и выходного файлов. Предусмотреть запись выходного файла на диск. Длина строки файла не должна превышать 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)

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Вот, как-то так.. Комменты по тексту.
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 используется для нового файла - это грубая ошибка!


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской
Реальное имя: Ананий

Репутация: -  0  +


Цитата
Разбирайся, задавай вопросы. Пожалуйста, обрати внимание на форматирование кода - оно тебе очень поможет в будущем.


Что сделать для обработки, при введении текста с экрана.


тут я применил тэги цитаты и цвета. Нажми "Изменить - полное редактирование" - и увидишь, как. Lapp

Сообщение отредактировано: Lapp -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Earl_Ananiy @ 28.01.2010 19:33) *
Что сделать для обработки, при введении текста с экрана.
Неясно, что ты имеешь в виду. Можешь сказать поподробнее? Вместо входного файла - ввод с клавы? да? Немного побольше слов, пожалуйста..


И, пожалуйста, используй тэги. Для кода - code, для цитаты - quote, и т.п. Видишь разные кнопочки над формой ввода? Они обрамляют выделенный текст тэгами. Выдели текст мышкой и нажми, например, B. А потом нажми кнопку предпросмотра (она внизу). Поэкспериментируй.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской
Реальное имя: Ананий

Репутация: -  0  +


Цитата(Lapp @ 28.01.2010 19:41) *

Неясно, что ты имеешь в виду. Можешь сказать поподробнее? Вместо входного файла - ввод с клавы? да? Немного побольше слов, пожалуйста..
И, пожалуйста, используй тэги. Для кода - code, для цитаты - quote, и т.п. Видишь разные кнопочки над формой ввода? Они обрамляют выделенный текст тэгами. Выдели текст мышкой и нажми, например, B. А потом нажми кнопку предпросмотра (она внизу). Поэкспериментируй.


Код
Для ввода с клавиатуры.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Earl_Ananiy @ 28.01.2010 19:52) *

Код
Для ввода с клавиатуры.


Граф, сделай еще попытку. Эта много понимания не добавила.. smile.gif

P.S.
Тэги кода - для САМОГО кода: Паскаль, Си.. Выбери в меню нужный пункт.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской
Реальное имя: Ананий

Репутация: -  0  +


Цитата(Lapp @ 28.01.2010 20:18) *

Граф, сделай еще попытку. Эта много понимания не добавила.. smile.gif

P.S.
Тэги кода - для САМОГО кода: Паскаль, Си.. Выбери в меню нужный пункт.


Что то я сам запутался.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Earl_Ananiy @ 28.01.2010 20:25) *
Что то я сам запутался.
Не страшно. smile.gif
Разбирайся, распутывайся.
Побольше экспериментируй.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской
Реальное имя: Ананий

Репутация: -  0  +


Цитата(Lapp @ 28.01.2010 20:37) *

Не страшно. smile.gif
Разбирайся, распутывайся.
Побольше экспериментируй.



У меня получилось такого вида:
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 килобайт ) Кол-во скачиваний: 398


Сообщение отредактировано: Lapp -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


По поводу тэгов - загляни, пожалуйста, вот сюда: Помогите с программкой . И если ты и после этого не будешь обрамлять код тегами - закрою тему за нарушение правил.

И еще, я тебя очень прошу: пожалуйста, пойди в меню Options -> Environment -> Editor и там сними галку с пункта "Use Tab characters". Она мне сегодня попортила несколько литров крови..
Цитата(Earl_Ananiy @ 29.01.2010 9:13) *
Но нужно еще доработать.
Нет, боюсь, что надо переделать, и сильно..

1. Так нельзя писать программы: ты сдублировал практически весь код из-за ввода имен файлов! А теперь представь, что твоя программа производила бы сложные расчеты и ее код занимал бы много страниц - и ты бы его тоже удвоил? blink.gif Или так: тебе понадобилось внести изменения в алгоритм - что, тоже оба менять? Использование одного кода для разных случаев - это одна из главных черт программирования. Постарайся это иметь в виду в дальнейшем.

2. дальше, ты неверно делаешь ввод названий файлов. Ты пытаешься их считывать прямо в файорвую переменную, что совершенно неверно. Их надо читать в строковую переменную, а потом делать Assign, как ты сделал в другом случае. Интересно, что компилятор не смог эту твою ошибку отловить, поскольку в результате получилась допустимая по синтаксису конструкция.. smile.gif

3. Я тебе писал в прошлый раз: не надо писать директорию в имени файла. Запускай программу в той директории, где находится файл, и все будет в порядке. Если ты почему-то не можешь этого делать - так и СКАЖИ по крайней мере.. Тебе понравится, когда твои слова будут игнорировать БЕЗ ЗВУКА?
А вообще, я подозреваю, что ты запускаешь Турбо прямо в директории, где он установлен, отсюда и проблема. Это В КОРНЕ неправильно, постарайся это изжить. Давай обсудим, как именно, если хочешь. Но если я увижу, что опять та же фигня продолжается - я больше не зайду в эту тему..

4. Я подправил некоторые слова.. органически не переношу латиницу, но если уж употребляешь - ну пощади и не пиши "введите вводимые"! Страх и ужас.. (TarasBer, ау! smile.gif ты меня заразил..)

Вот тебе код, разберись и приходи:
program kurs2;
var
f,g:text;
n,m,fName,gName:string[80];
v,pos:integer;

begin
write('Vvedite vhodnoi text (input.txt, esli pusto): ');
readln(fName);
if fName='' then fName:='input.txt';
assign(f,fName);
reset(f);
write('Vvedite vyhodnoi text (output.txt, esli pusto): ');
readln(gName);
if gName='' then gName:='output.txt';
assign(g,gName);
rewrite(g);
write('Vvedite nomer pozicii: ');
readln(pos);
write('Vvedite vstavku: ');
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);
readln
end.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 16.06.2024 15:51
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name