1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Молодец! Наверно я чуть не понятно написал коментарии. Вот переписал паскалевский код:
Если i-ый символ строки buf не есть разделитель то увеличим счетчик количества букв в строке в другом случае если (символ перед i-ым элементом строки buf был не разделителем) и (i не является единицей) то увеличим счетчик количества слов в строке
Может так будет понятнее.
Сообщение отредактировано: Bokul -
--------------------
Лао-Цзы : Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
так...написано в твоем сообщении,что если i-тый символ-буква,прибавляем ее... если i-1-ый элемент не буква и не начало строки,то прибавляем слово....так я поняла?
так...написано в твеом сообщении,что если i-тый символ-буква,прибавляем ее... если i-1-ый элемент не буква и перед 1-ыи и не начало строки,то прибавляем слово....так я поняла?
Почти...
Цитата
если i-1-ый элемент не буква
убери не, тогда будет правильно. У нас есть два множества: 1 разделители 2 не разделители = буквы =>
Цитата
символ перед i-ым элементом строки buf был не разделителем
можно заменить на
Цитата
символ перед i-ым элементом строки buf был буквой
Сообщение отредактировано: Bokul -
--------------------
Лао-Цзы : Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
Мы делаем проверку символа перед i, только чтобы бороться с ситуациями когда несколько разделителей идут в подряд, например
123 1
{три пробела} Представь что у нас нету этой проверки. Тогда алгоритм упростится до такового:
Если i-ый символ строки buf есть буквой то увеличим счетчик количества букв в строке в другом случае увеличим счетчик количества слов в строке
Пройдись с этим алгоритмом по приведенной строке и ты увидишь необходимость делать эту поверку.
--------------------
Лао-Цзы : Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
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);
Вместо этой строки поставь то, что написано здесь: Строки в текстовом файле. Естественно изменив соответствующие переменные.
Цитата
а меня не забанят за такую "активность"?
За желание знать тут не банят.
Сообщение отредактировано: Bokul -
--------------------
Лао-Цзы : Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
Знаки (форматированный вывод) не главное, главное - эта проверка количества слов на 0
if n<>0 then writeln(tr,s/n) else writeln(tr,0);
Без проверки прога вылетит с ошибкой Division by zero в случае, когда n=0.
Сообщение отредактировано: Bokul -
--------------------
Лао-Цзы : Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.