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

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

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

4 страниц V « < 2 3 4  
 Ответить  Открыть новую тему 
> Строки в текстовом файле., Помогите найти ошибку пожалуйста.
сообщение
Сообщение #61


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

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


Цитата
неразделитель...

good.gif good.gif good.gif
Молодец!
Наверно я чуть не понятно написал коментарии.
Вот переписал паскалевский код:

Если i-ый символ строки buf не есть разделитель то
увеличим счетчик количества букв в строке
в другом случае
если (символ перед i-ым элементом строки buf был не разделителем) и (i не является единицей) то
увеличим счетчик количества слов в строке


Может так будет понятнее. smile.gif

Сообщение отредактировано: Bokul -


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #62


lehf
**

Группа: Пользователи
Сообщений: 115
Пол: Женский

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


так...написано в твоем сообщении,что если i-тый символ-буква,прибавляем ее...
если i-1-ый элемент не буква и не начало строки,то прибавляем слово....так я поняла? unsure.gif

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


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

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


Цитата
так...написано в твеом сообщении,что если i-тый символ-буква,прибавляем ее...
если i-1-ый элемент не буква и перед 1-ыи и не начало строки,то прибавляем слово....так я поняла?

good.gif Почти...
Цитата
если i-1-ый элемент не буква

убери не, тогда будет правильно.
У нас есть два множества:
1 разделители
2 не разделители = буквы
=>
Цитата
символ перед i-ым элементом строки buf был не разделителем

можно заменить на
Цитата
символ перед i-ым элементом строки buf был буквой


Сообщение отредактировано: Bokul -


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #64


lehf
**

Группа: Пользователи
Сообщений: 115
Пол: Женский

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


Цитата
символ перед i-ым элементом строки buf был букой

а почему тогда слово-то прибавляем? blink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #65


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

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


Мы делаем проверку символа перед i, только чтобы бороться с ситуациями когда несколько разделителей идут в подряд, например
123   1

{три пробела}
Представь что у нас нету этой проверки. Тогда алгоритм упростится до такового:

Если i-ый символ строки buf есть буквой то
увеличим счетчик количества букв в строке
в другом случае
увеличим счетчик количества слов в строке


Пройдись с этим алгоритмом по приведенной строке и ты увидишь необходимость делать эту поверку.


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #66


lehf
**

Группа: Пользователи
Сообщений: 115
Пол: Женский

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


черт!Я поняла! lol.gif
неужели в самом деле. lol.gif

решила вставить процедуру....
program kyrs;
const
Iscl=',.!?:;- ';
var f1,f2:text;
kolb,kolc,i:byte;
str,SourceFile,ResultFile:string;
procedure schet_slov (var kolc:byte;var str:string);
var i:byte;
begin
if ((pos(str[i-1],Iscl)=0) and ((i-1)<>0)) then
inc(kolc);
if pos(str[length(str)],Iscl)=0 then
inc(kolc);
end;
begin
writeln('‚ўҐ¤ЁвҐ Ё¬п д ©« -Ёбв®з­ЁЄ ');
readln(SourceFile);
assign(f1,SourceFile);
{$I-}
reset(f1);
{$I+}
if IoResult<>0 then
begin
writeln('ЋиЁЎЄ  ў Ё¬Ґ­Ё д ©« ');
readln;
exit;
end;
writeln('‚ўҐ¤ЁвҐ Ё¬п д ©« -१г«мв в ');
readln(ResultFile);
assign(f2,ResultFile);
{$I-}
rewrite(f2);
{$I+}
if IoResult<>0 then
begin
writeln('ЋиЁЎЄ  ў Ё¬Ґ­Ё д ©« ');
readln;
exit;
end;
while not eof(f1) do
begin
readln(f1,str);
kolb:=0;
kolc:=0;
for i:=1 to length(str) do
if pos(str[i],Iscl)=0 then
inc(kolb)
else
schet_slov(kolc,str);
writeln(f2,kolb/kolc);
end;
close(f1);
close(f2);
end.

считает неверно. unsure.gif


а меня не забанят за такую "активность"? unsure.gif

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


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

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


              
kolb:=0;
kolc:=0;
for i:=1 to length(str) do
if pos(str[i],Iscl)=0 then
inc(kolb)
else
schet_slov(kolc,str);


Ты должна сделать процедуру с всего этого. Посмотри на мой процедурный вариант этой проги, там так и есть.
 writeln(f2,kolb/kolc);

Вместо этой строки поставь то, что написано здесь: Строки в текстовом файле.
Естественно изменив соответствующие переменные.
Цитата
а меня не забанят за такую "активность"?

За желание знать тут не банят. smile.gif

Сообщение отредактировано: Bokul -


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #68


lehf
**

Группа: Пользователи
Сообщений: 115
Пол: Женский

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


give_rose.gif blush.gif applause.gif respect.gif respect2.gif rolleyes.gif tease.gif
блок-схемки теперь мне нарисовать только....=)
но знаки эти я все равно не ставила в ответе. blum.gif
ты уж извини. blush.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #69


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

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


good.gif
Цитата
но знаки эти я все равно не ставила в ответе.

Знаки (форматированный вывод) не главное, главное - эта проверка количества слов на 0

if n<>0 then
writeln(tr,s/n)
else
writeln(tr,0);


Без проверки прога вылетит с ошибкой Division by zero в случае, когда n=0.

Сообщение отредактировано: Bokul -


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #70


lehf
**

Группа: Пользователи
Сообщений: 115
Пол: Женский

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


Цитата(Bokul @ 11.12.2006 4:19) *

good.gif

Знаки (форматированный вывод) не главное, главное - эта проверка количества слов на 0

if n<>0 then
writeln(tr,s/n)
else
writeln(tr,0);


Без проверки прога вылетит с ошибкой Division by zero в случае, когда n=0.

никогда еще в жизни не встречалась с такой отзывчивостью.Спасибо. rolleyes.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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