Строки в текстовом файле., Помогите найти ошибку пожалуйста. |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Строки в текстовом файле., Помогите найти ошибку пожалуйста. |
Bokul |
10.12.2006 22:02
Сообщение
#41
|
Гуру Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
Цитата просто дело в том,что цикл работал и считал правильно для одной строки....безошибочно...а теперь.... Во-первых, у тебя к разделителям слов относится только пробел, а как же другие знаки пунктуации? Для каждого будешь делать свою проверку? Во-вторых, в твоей проге не учтено много ситуаций, например какой ответ будет при такой строке: ааа ааа ? Должно выдать 3, но так как между словами 2 пробела, твоя прога даст 2... А если строка будет состоять только из одного пробела, она вообще вылетит с ошибкой Division by zero, - деление на ноль. Так что возьми мой код и не мучься. Сообщение отредактировано: Bokul - 10.12.2006 22:02 -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
Ellsa |
10.12.2006 22:05
Сообщение
#42
|
lehf Группа: Пользователи Сообщений: 115 Пол: Женский Репутация: 4 |
|
Bokul |
10.12.2006 22:08
Сообщение
#43
|
Гуру Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
Почему не сможешь? Спрашивай что не ясно!
-------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
Ellsa |
10.12.2006 22:10
Сообщение
#44
|
lehf Группа: Пользователи Сообщений: 115 Пол: Женский Репутация: 4 |
не могу я все спрашивать...итак из исправления ошибки получилось написание всей курсовой.... неудобно мне.
|
Bokul |
10.12.2006 22:40
Сообщение
#45
|
Гуру Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
До этой части должно быть все понятно
inc(n) равносильно n:=n+1; Ты знакома с функцией pos(s1,s2)? Она возвращает номер первого вхождения подстроки s1 в строку s2. Если же такой подстроки нету в s2, то она возвращает 0. А с помощью pos(buf[i],separators)=0 мы проверяем является ли i-ый элемент строки buf не разделителем - если мы не нашли buf[i] в separators, то там его и нету. else{в противном случае...} Обрати внимание на buf[i-1]! Так мы боремся с ситуацией, когда разделители идут в подряд, в этом случае не надо повышать количество слов. if ((pos(buf[i-1],separators)=0) and ((i-1)<>0)) ((i-1)<>0)) добавили, чтобы эта проверка не делалась для первого элемента.
Последняя проверка нужна чтобы исключить ситуацию, когда последним символом строки является разделитель, если это так то незачем поднимать количество слов - мы его уже подняли в else -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
Ellsa |
10.12.2006 22:59
Сообщение
#46
|
lehf Группа: Пользователи Сообщений: 115 Пол: Женский Репутация: 4 |
большое тебе спасибо....но боюсь это не по моим мозговым возможностям....я сделаю все,что смогу.тебе большое очень спасибо за то,что отозвался и так помог!
вот только один и последний вопрос....ибо времени все равно уже не будет....либо сдам,либо нет. Цитата Separators=',.!? ' почему '' стоит?Я просто с таким вообще не сталкивалась никогда.... и Цитата writeln(tr,s/n:0:2); {запишем результат} что такое s/n:0:2? кста,эта прога неверно у меня посчитала. trunc надо. |
Bokul |
10.12.2006 23:01
Сообщение
#47
|
Гуру Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
Цитата почему '' стоит?Я просто с таким вообще не сталкивалась никогда.... Так мы объявляем константу-строку, тоже самое, что и переменная, но ее нельзя изменять. Если констант не учили, то объяви в Var строковую переменную Separators (в принципе можно любое имя, но только потом на всех местах Separators в проге, поставь имя новой переменной), а потом, перед циклом while, присвой ей значение ',.!? '. Еще! вместо writeln(tr,s/n:0:2) поставь
Сообщение отредактировано: Bokul - 10.12.2006 23:01 -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
Bokul |
10.12.2006 23:13
Сообщение
#48
|
Гуру Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
Цитата trunc надо. trunc - обрежет дробовую часть, а как же тогда быть 2.5, 2.6, 2 - одно и тоже? Цитата кста,эта прога неверно у меня посчитала. Что значит неверно? Ответ был вроде 2.00? Цитата что такое s/n:0:2? Форматированный вывод. Первая цифра отвечает за количество цифр в целой части числа, вторая - дробной, 0 - для любого количества. Попробуй запустить прогу с writeln(tr,s/n) или writeln(tr,s/n:0:5), поймешь разницу... -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
Ellsa |
10.12.2006 23:15
Сообщение
#49
|
lehf Группа: Пользователи Сообщений: 115 Пол: Женский Репутация: 4 |
просто букв не может быть дробное число...среднее значение количества букв...
в этой строке среднее количество букв в слове равно 2.22 хм... |
Bokul |
10.12.2006 23:18
Сообщение
#50
|
Гуру Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
Цитата просто букв не может быть дробное число...среднее значение количества букв... в этой строке среднее количество букв в слове равно 2.22 Ни черта не понял... -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
Ellsa |
10.12.2006 23:43
Сообщение
#51
|
lehf Группа: Пользователи Сообщений: 115 Пол: Женский Репутация: 4 |
опять я неправа думаю.
|
Алена |
10.12.2006 23:47
Сообщение
#52
|
Гость |
|
Bokul |
11.12.2006 0:03
Сообщение
#53
|
Гуру Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
Цитата Ни в коем случае: первая показывает, поле какой ширины отдавать на ВСЁ число, а вторая - сколько из этого количества пойдет на представление дробной части... Точно.. Цитата опять я неправа думаю. В чем ты не права? Я не понял, что ты хотела сказать. Просто старайся меньше использовать "..." -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
Ellsa |
11.12.2006 0:59
Сообщение
#54
|
lehf Группа: Пользователи Сообщений: 115 Пол: Женский Репутация: 4 |
Цитата if ((pos(buf[i-1],separators)=0) and ((i-1)<>0)) then {..это разделитель, то (более подробно ниже} зачем ((i-1)<>0)) ? а нет проги,которая бы сделала мне блок - схему,зная прогу? Обратную я просто видела когда-то в интернете... Bokul слушай,а ты учебник издать не хочешь? Сообщение отредактировано: Ellsa - 11.12.2006 0:53 |
Bokul |
11.12.2006 1:11
Сообщение
#55
|
Гуру Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
Цитата зачем ((i-1)<>0)) ? Цикл идет от 1 и до длинны строки. В следующим коде (pos(buf[i-1],separators)=0) как ты думаешь какой символ хранится в buf[i-1] при i=1? Ответ: там хранится длинна строки. Если интересно то ord(buf[0]) тоже самое, что и length(buf). Так вот, было бы не правильно, если бы мы попытались обратится к этому числу, как к символу, и чтобы не делать этой ошибки я и сделал эту проверку. Цитата а нет проги,которая бы сделала мне блок - схему,зная прогу? Есть Программа построения блок-схем Цитата Обратную я просто видела когда-то в интернете... Сильно сомневаюсь, просто одну и туже схему можно реализовать многими способами. -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
Ellsa |
11.12.2006 1:14
Сообщение
#56
|
lehf Группа: Пользователи Сообщений: 115 Пол: Женский Репутация: 4 |
Цитата Сильно сомневаюсь, просто одну и туже схему можно реализовать многими способами. я правда видела.... блин,спасибо тебе громадное!А по каким книгам ты это все изучал?или ты по паскалю просто шарил? Так все хорошо объяснять...почему не ты у меня преподаешь!!!!!! я бы весь паскаль выучила.... |
Bokul |
11.12.2006 1:20
Сообщение
#57
|
Гуру Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
Цитата А по каким книгам ты это все изучал?или ты по паскалю просто шарил? Форум этот научил, за что ему спасибо Потусуешься здесь, сама начнешь понимать . Так что не пропадай... -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
Ellsa |
11.12.2006 3:01
Сообщение
#58
|
lehf Группа: Пользователи Сообщений: 115 Пол: Женский Репутация: 4 |
Цитата if pos(buf[i],separators)=0 then {если этот элемент буква (не разделитель)...} Цитата if ((pos(buf[i-1],separators)=0) and ((i-1)<>0)) then {..это разделитель, программа работает,но я не понимаю....опознование разделителя и не разделителя выглядят одинаково? Сообщение отредактировано: Ellsa - 11.12.2006 3:01 |
Bokul |
11.12.2006 3:05
Сообщение
#59
|
Гуру Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
Цитата опознование разделителя и не разделителя выглядят одинаково? Конечно нет. Как ты думаешь эта строка определяет разделитель или не разделитель? pos(buf[i],separators)=0 -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
Ellsa |
11.12.2006 3:06
Сообщение
#60
|
lehf Группа: Пользователи Сообщений: 115 Пол: Женский Репутация: 4 |
|
Текстовая версия | 28.04.2024 9:03 |