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

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

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

> Строки, Для строки, которая может начинаться с пробела найти кол-во слов
Джейн Смит
сообщение 4.04.2010 12:15
Сообщение #1





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

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


Для строки, которая может начинаться с пробела найти кол-во слов.

Я сделала, но если вначале строки или в конце я ставлю пробел, то выдаёт неправильное значение. Может объясните в чём ошибка?

Program Stroki (input, output);
Uses crt;
Var
N,b,ch:integer;
word:string;
Label l;
BEGIN
Clrscr;
writeln('Vvedite stroky:');
readln(word);
n:=length (word);
ch:=1;
b:=pos(' ',word);
l: If b>0
then
begin
ch:=ch+1;
delete(word,1,b);
n:=length (word);
If n>0
then
begin
b:=pos(' ',word);
goto l;
end;
end;
writeln('V predlogenii ',ch,'slov(o)');
readkey;
END.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Archon
сообщение 8.04.2010 7:12
Сообщение #2


Профи
****

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

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


Действительно, я и забыл об этой директиве. Но формально, это все же оптимизация, ведь условие - это не более, чем арифметическое выражение, и как оно вычисляется - дело компилятора. Во всяком случае в курсе теории языков программирования подобная задача входила в тему "оптимизация". Имхо, любое выражение должно быть вычислимо полностью, а то так дойдет до того, что выражение "a := 10 * b + 0 * c / 0;" корректно, потому что второй многочлен уже после умножения "очевидно" равен нулю smile.gif.

Но если окажется, что директива $B является частью языка паскаль и обязана присутствовать в любом его компиляторе, тогда я соглашусь, что использование подобных логических выражений в целом корректно (хотя {$B-} лучше все таки явно указать).

Цитата
В Паскале тоже были попытки ввести нечто подобное, и это как раз есть ложка дегтя в бочке меда.. Мало того, что они оставили нормальную форму (or и and) именно для полного вычисления, они еще и изобрели совершенно неудобоваримые и длинные обозначения and_then и or_else для гораздо более широко используемой краткой формы!!
Очень интересно good.gif Нашел эти стандарты, на досуге почитаю. Мне казалось что-то подобное было а Аде, но чтоб в паскале... rolleyes.gif

Добавлено через 12 мин.
Вот тут об этом вопросе пишут: Wikipedia: Comparison of Pascal and C -> Expressions -> Logical connectives


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



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