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

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

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

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


Гуру
*****

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

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


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

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

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


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

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


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


lehf
**

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

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


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

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


Гуру
*****

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

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


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

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

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

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


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


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


lehf
**

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

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


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

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


Гуру
*****

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

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


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

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

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


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


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ellsa
сообщение 11.12.2006 3:50
Сообщение #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 - 11.12.2006 3:51
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Bokul
сообщение 11.12.2006 4:00
Сообщение #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 - 11.12.2006 4:01


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


lehf
**

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

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


give_rose.gif blush.gif applause.gif respect.gif respect2.gif rolleyes.gif tease.gif
блок-схемки теперь мне нарисовать только....=)
но знаки эти я все равно не ставила в ответе. blum.gif
ты уж извини. blush.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Bokul
сообщение 11.12.2006 4:19
Сообщение #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 - 11.12.2006 4:20


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ellsa
сообщение 11.12.2006 4:20
Сообщение #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

 



- Текстовая версия 27.04.2024 22:34
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"